有哪些配置中心的框架
㈠ 闱栾剦閰岖疆涓蹇幂殑鎽呜炬湁鍝浜
宸ヤ綔鍙般佹娊椋庢煖銆佽嵂镆溿佸懠钖告満銆傞润鑴夐厤缃涓蹇冩槸閲嶈佺殑鍖荤枟涓蹇冿纴钥屽伐浣滃彴鏄鏀剧疆闱栾剦娉ㄥ皠镓闇镄勫悇绉嶅櫒𨱒愬拰钻鐗╋纴鎶介庢煖鐢ㄤ簬椋庡共娑堟瘨钖勭嶅尰鐤楃敤锛岃嵂镆灭敤浜庡瓨鏀鹃润鑴夋敞灏勫悇绉岖殑钻鐗╋纴锻煎惛链烘槸鐢ㄤ簬䦅呬汉鍑虹幇闂棰樿屽懠钖告墍鐢ㄧ殑链哄櫒銆
㈡ java系统架构有哪些apache
java系统架构有一下几种:
_ava框架 一、Spring框架。 Spring框架是Java后端框架家族中最强大的,拥有IOC和AOP两大利器,简化了开发的复杂性。此外,Spring现在可以与所有主流开发框架集成,这是一个通用框架。Spring使Java开发变得简单。
?2.SpringMVC框架。 它是MVC的开源框架,用来代替Struts,是Spring项目的重要组成部分,可以与SpringIOC容器结合,具有松耦合、配置方便、代码分离等特点,使Java程序员更容易开发WEB项目。
_SpringBoot框架。 SpringBoot是Spring开源组织下的一个子项目,也是Spring组件的一站式解决方案,主要是为了简化使用Spring的框架难度。
?
_摹CloudSpring。
_馐且幌盗锌蚣艿挠行蚣希悄壳白钊让诺奈⒎窨蚣艿氖籽J紫龋_pringBoot开发的便利性,巧妙地简化了分布式系统基础的开发,如服务发现注册、配置中心、消息总线、负载平衡、断路器、数据监控等。,可以使用SpringBoot的开发风格一键启动和部署。
_濉Netty。 JBOSS提供的开源异步Netty是基于事件驱动的网络通信框架。能迅速提高开发性能,高可靠性的网络服务器和客户端程序,netty简化了网络应用的编程开发过程,使用开发网络编程变得极其简单。
_Quartz。 Quartz是一个基于Java广泛使用的开源任务调度框架。做过定时任务的没用过这个框架吗?
?7.jQuery。 JQuery是一个快速简洁的JavaScript框架,它包装了JavaScript常用的功能代码,提供了一种简单的JavaScript设计模式,极大地简化了JavaScript编程。
?8.4jLog。 Log4j是Apache的开源日志框架。通过Log4j,我们可以将程序中的日志信息输出到控制台和文件中记录日志。Log4j2是最古老的日志框架,其主流版本是Log4j2。Log4j2是一个重新构建的日志框架,它抛弃了之前Log4j的不足,吸收了Logback的优秀日志框架设计。
㈢ SpringCloud寰链嶅姟缁勪欢浠嬬粛
Spring Cloud鏄涓绯诲垪妗嗘灦镄勬湁搴忛泦钖堬纸妗嗘灦闆嗭级锛屼粬鍒╃敤Spring Boot镄勫紑鍙戜究鍒╂у阀濡欑殑绠鍖栦简鍒嗗竷寮忕郴缁熷熀纭璁炬柦镄勫紑鍙戯纴濡傛湇锷″彂鐜版敞鍐屻侀厤缃涓蹇冦佹秷鎭镐荤嚎銆佽礋杞藉潎琛°佹柇璺鍣ㄣ佹暟鎹鐩戞带绛夈
SpringCloud鍒╃敤SpringBoot镄勫紑鍙戜究鍒╂у阀濡椤湴绠鍖栦简鍒嗗竷寮忕郴缁熷熀纭璁炬柦镄勫紑鍙戯纴SpringCloud涓哄紑鍙戜汉锻樻彁渚涗简蹇阃熸瀯寤哄垎甯冨纺绯荤粺镄勪竴浜涘伐鍏凤纴鍖呮嫭閰岖疆绠$悊銆佹湇锷″彂鐜般佹柇璺鍣ㄣ佽矾鐢便佸井浠g悊銆佷簨浠舵荤嚎銆佸叏灞阌併佸喅绛栫珵阃夈佸垎甯冨纺浼氲瘽绛夌瓑锛屽畠浠閮藉彲浠ョ敤SpringBoot镄勫紑鍙戦庢牸锅氩埌涓阌钖锷ㄥ拰閮ㄧ讲銆
SpringCloud骞舵病链夐吨澶嶅埗阃犺疆瀛愶纴瀹冨彧鏄灏嗙洰鍓嶅悇瀹跺叕鍙稿紑鍙戠殑姣旇缉鎴愮啛銆佺粡寰楄捣瀹为檯钥冮獙镄勬湇锷℃嗘灦缁勫悎璧锋潵锛岄氲繃SpringBoot椋庢牸杩涜屽啀灏佽呭睆钄芥帀浜嗗嶆潅镄勯厤缃鍜屽疄鐜板师鐞嗭纴链缁堢粰寮鍙戣呯暀鍑轰简涓濂楃亩鍗曟槗镍伞佹槗閮ㄧ讲鍜屾槗缁存姢镄勫垎甯冨纺绯荤粺寮鍙戝伐鍏峰寘
涓嬮溃鏄疭pring Cloud镄勬暣浣撴灦鏋勫浘锛
娉ㄥ唽涓蹇冨彲浠ヨ存槸寰链嶅姟鏋舵瀯涓镄勨滈氲褰曗濓纴浠栬板綍浜嗘湇锷″拰链嶅姟鍦板潃镄勬椠灏勫叧绯汇傚湪鍒嗗竷寮忔灦鏋勪腑锛屾湇锷′细娉ㄥ唽鍒拌繖閲岋纴褰撴湇锷¢渶瑕佽皟鐢ㄥ叾浠栨湇锷℃椂锛屽氨鍦ㄨ繖閲屾垒鍒板瑰簲链嶅姟镄勫湴鍧锛岃繘琛岃皟鐢ㄣ
娉ㄥ唽涓蹇幂殑涓昏佷綔鐢
Ribbon鏄疦etflix鍙戝竷镄勪竴涓璐熻浇鍧囱锛屾湁锷╀簬鎺у埗HTTP鍜孴CP瀹㈡埛绔琛屼负銆傚湪Spring Cloud涓锛孍ureka涓鑸閰嶅悎Ribbon杩涜屼娇鐢锛孯ibbon鎻愪緵浜嗗㈡埛绔璐熻浇鍧囱镄勫姛鑳斤纴Ribbon鍒╃敤浠嶦ureka涓璇诲彇鍒扮殑链嶅姟淇℃伅锛屽湪璋幂敤链嶅姟鑺傜偣鎻愪緵镄勬湇锷℃椂锛屼细钖堢悊镄勮繘琛岃礋杞姐
鍦⊿pring Cloud涓鍙浠ュ皢娉ㄥ唽涓蹇冨拰Ribbon閰嶅悎浣跨敤锛孯ibbon镊锷ㄧ殑浠庢敞鍐屼腑蹇冧腑銮峰彇链嶅姟鎻愪緵钥呯殑鍒楄〃淇℃伅锛屽苟锘轰簬鍐呯疆镄勮礋杞藉潎琛$畻娉曪纴璇锋眰链嶅姟銆
Ribbon铡熺悊
鍑犵嶈礋杞藉潎琛$瓥鐣ワ细
Hystrix鏄疦etflix寮婧愮殑涓娆惧归敊妗嗘灦锛屽寘钖甯哥敤镄勫归敊鏂规硶銆傚湪楂桦苟鍙戣块梾涓嬶纴绯荤粺镓渚濊禆镄勬湇锷$殑绋冲畾镐у圭郴缁熺殑褰卞搷闱炲父澶э纴渚濊禆链夊緢澶氢笉鍙鎺х殑锲犵礌锛屾瘆濡傜绣缁滆繛鎺ュ彉鎱锛岃祫婧愮獊铹剁箒蹇欙纴𨱌傛椂涓嶅彲鐢锛屾湇锷¤㔉链虹瓑銆侣ystrix鍒╃敤镡旀柇銆佺嚎绋嬫睁闅旂汇佷俊鍙烽噺闅旂汇侀檷绾у洖阃绛夋柟娉曟潵澶勭悊渚濊禆闅旂伙纴浣跨郴缁熷彉寰楅珮鍙鐢ㄣ
Hystrix涓昏佹彁渚涗简浠ヤ笅鍑犵嶅归敊鏂规硶锛
Spring Cloud Gateway鏄疭pring瀹樻柟鎺ㄥ嚭镄勬湇锷$绣鍏崇殑瀹炵幇妗嗘灦锛岀浉瀵逛簬链嶅姟缃戝叧镄勬傚康链夌偣绫讳技浜庝紶缁熺殑鍙嶅悜浠g悊链嶅姟鍣锛埚俷ginx锛夛纴浣嗗弽钖戜唬鐞嗕竴鑸閮藉彧鏄锅氢笟锷℃棤鍏崇殑杞鍙戣锋眰锛岃屾湇锷$绣鍏充笌链嶅姟镄勬暣钖堢▼搴︽洿楂桡纴鍙浠ョ湅浣滀篃鏄鏁翠釜链嶅姟浣撶郴镄勭粍鎴愰儴鍒嗭纴阃氲繃杩囨护鍣ㄧ瓑缁勪欢鍙浠ュ湪缃戝叧涓闆嗘垚涓浜涗笟锷″勭悊镄勬搷浣滐纸姣斿傛潈闄愯よ瘉绛夛级銆
镙稿绩锷熻兘锛
Spring Cloud Stream鏄涓涓鐢ㄦ潵涓哄井链嶅姟搴旂敤鏋勫缓娑堟伅椹卞姩鑳藉姏镄勬嗘灦銆
鐗圭偣锛
灞忚斀搴曞眰 MQ 瀹炵幇缁呜妭锛孲pring Cloud Stream 镄 API 鏄缁熶竴镄勚傚傛灉浠 Kafka 鍒囧埌 RocketMQ锛屽彲浠ョ洿鎺ヤ慨鏀归厤缃銆
涓 Spring 鐢熸佹暣钖堟洿锷犳柟渚裤係pring Cloud Data Flow镄勬祦璁$畻閮芥槸锘轰簬 Spring Cloud Stream锛汼pring Cloud Bus 娑堟伅镐荤嚎鍐呴儴涔熸槸鐢ㄧ殑 Spring Cloud Stream銆
閰岖疆涓蹇冨姛鑳斤细
鍒嗗竷寮忛摼璺杩借釜锛屽氨鏄灏嗕竴娆″垎甯冨纺璇锋眰杩桦师鎴愯皟鐢ㄩ摼璺锛岃繘琛屾棩蹇楄板綍锛屾ц兘鐩戞带骞跺皢涓娆″垎甯冨纺璇锋眰镄勮皟鐢ㄦ儏鍐甸泦涓灞旷ず銆傛瘆濡傚悇涓链嶅姟鑺傜偣涓婄殑钥楁椂锛岃锋眰鍏蜂綋鍒拌揪鍝鍙版満鍣ㄤ笂銆佹疮涓链嶅姟鑺傜偣镄勮锋眰鐘舵佺瓑绛夈
鍒嗗竷寮忛摼璺杩借釜鏂规堬细
㈣ 开源推荐-C++开发的微服务框架Tars
Tars致力于建设微服务技术生态,在底层基础设施、服务框架、上层应用以及DevOps等方面,都做了较为深入的研发。
2020年3月10日,Linux基金会正式宣布旗下的TARS开源项目成立TARS子基金会。这是一个 专注于微服务领域 的开源基金会,致力于帮助企业拥抱微服务体系架构,解决在使用微服务方面可能出现的问题。这是首个 起源于中国开源项目 的国际开源基金会,也是Linux基金会下 唯一聚焦微服务技术生态 的子基金会。
Tars基金会里目前收录了9个项目,分为5部分:工具集(Tars Lab)、服务治理(Service Governance)、微服务开发框架(Development Framwork)、存储(DCache)和基础设施(Infrustructure)。
1、Tars Lab
Tars Lab项目提供了压力测试TarsJMeter,基准测试集TarsBenchmark和一些开发工具包。TarsJavaStart,可以生成服务端和客户端的TarsJava脚手架,快速开始Tars服务的开发。TarsTools,是一款支持多种IDE的JetBrains插件,为实现编辑Jce/Tars文件使用的(支持Intellij IDEA、Android Studio、PhpStorm、WebStorm、GoLand、CLion等)。
2、服务治理
服务治理包含了2个项目:TSeer专注于处理服务注册与发现;TarsGateway是基于Tars框架开发的微服务网关,除具备网关的基础功能外,还可以自动将HTTP转换成Tars-RPC协议。
3、微服务开发框架
这部分只包含Tars一个项目,核心模块由C++开发,提供了多语言开发框架,默认rpc调用,是Tars基金会的核心项目。其他项目都是围绕这个项目研发的。
4、微服务存储
这部分只包含DCache一个项目,它是基于Tars框架开发的 分布式共享内存存储系统 ,支持常用的kv数据结构、支持二级索引、支持在线扩缩容、支持自动持久化到后端db等特性。DCache依赖Tars框架的运行,但也得益于Tars,使得存储服务的运维成本几乎为0。
5、微服务基础设施
这是一个将Tars与K8S融合使用的项目,致力于将Tars融入到K8S生态中。
在这方面还有一个更优秀的项目K8SFramework,致力于将Tars与K8S深度融合,相信未来会纳入到基金会中。
| Tars的前世今生
Tars的前身是腾讯内部的TAF框架,已经经过了10年的验证,稳定运行与1.6w+服务器,100多个业务线中。
据统计, Tars已在超过 120 家公司、 261200 台服务器上稳定运行。
在分布式环境下,所有的微服务(包括DCache的服务)都可以通过框架自带的控制台-TarsWeb进行管理, 可以做到所有服务状态可监控,可以在控制台上进行启停、修改配置、执行运维指令等操作。
在分布式部署的情况下,可以通过Web控制台实现一键升级、回退。
Tars自带配置中心,分级配置,可以统一修改配置,做到“一点修改,全局生效”。
在服务部署时,可以在界面上填写要发布的节点,一键部署、扩容。
框架提供了状态监控的能力,可以监控服务的调用质量,如流量情况,平均耗时、超时率和异常率。
框架状态可以在控制台上一键核查。
Tars提供配套的性能测试工具,这也是Tars基金会的子项目。性能测试工作不再依赖专业的测试人员。
| Tars优势
1、原生RPC调用
Tars使用自研的RPC协议通信,服务之间建立长连接,在通信频繁的场景下具备显着的性能优势。
2、多语言支持
除C++和Java外,Tars还支持NodeJs,PHP,Go等语言,提供了相应的SDK。当团队技术栈多样化时,可以多语言协同开发,无缝对接,开发者可以选择自己熟悉的语言进行开发,提升团队整体效率。
在这方面,Spring Cloud想要支持异构语言,需要借助SideCar构建Service Mesh。 业界现在有一些比较流行的服务网格解决方案,但是 并没有形成统一的标准 , 可移植性不高 。比较常见的像Istio,由于是代理模式,而且非长连接,会存在 更大的延迟 。另一方面,Istio的部署和运维都非常 复杂 ,需要更多的学习成本和运维成本。
3、内置服务治理功能
Tars框架内嵌了丰富的服务治理功能,包括熔断、限流、负载均衡、认证、加密等。同时,在服务监控、数据采集,以及灰度部署、跨机房部署等方面,都原生支持,集成度高。
Spring Cloud要支持这些功能,要么需要集成其他组件,要么需要设计开发来实现。都需要付出额外的学习成本和研发成本。
4、运维监控
Tars为使用者提供了一体化的运维管理控制台,我们可以在Web上进行一键部署、扩容、升级、回退等运维操作。
Spring Cloud并没有配套的工具。要实现Web管控, 需要借助K8S和容器,同样需要付出额外的成本。
5、国产化
Tars是国内公司主导的开源项目,这一点就不多说什么了。
6、“套装”优势
Tars框架提供了微服务相关的一体化解决方案,常规情况下不需要再去集成其他组件,不存在兼容性问题。这就好比MacBook和兼容机的区别,兼容机你可能需要付出更多的试错成本才能达到想要的效果。
| 劣势
1、项目热度
Tars开源较晚,到目前只有5年多时间,项目热度不如Spring Cloud,应用也没Spring Cloud广泛。
2、Tars的云原生之路
Tars和K8s的深度融合也开源不久(2020年7月,K8SFramework),还有待落地验证。这个项目现在的更新频率较高,不建议在生产中使用。但是从这一点也可以看到社区工作者对Tars与K8S融合的高涨热情,相信未来这个项目一定会大放异彩!
Tars在微服务开发、运维、监控等方面提供了一体化的解决方案,可以帮助我们低成本构建企业级微服务。适用于各种规模的团队,各种规模的系统。
在做技术选型时,如果团队中有C++开发人员,或者有多语言开发的情况,而且团队规模、资源有限的情况下,建议选择Tars。它在运维、监控、测试等方面会为我们节约大量成本。
未来,随着 K8SFramework 项目的日渐成熟,相信Tars生态会被更多的团队熟知和使用。
㈤ 基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构(附源码)
前言
zheng项目不仅仅是一个开发架构,而是努力打造一套从 前端模板 - 基础框架 - 分布式架构 - 开源项目 - 持续集成 - 自动化部署 - 系统监测 - 无缝升级 的全方位J2EE企业级开发解决方案。
项目介绍
基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构,提供整套公共微服务服务模块:内容管理、支付中心、用户管理(包括第三方)、微信平台、存储系统、配置中心、日志分析、任务和通知等,支持服务治理、监控和追踪,努力为中小型企业打造全方位J2EE企业级开发解决方案。
技术
名称
官网
技术
名称
官网
架构图
模块依赖
Spring+SpringMVC+Mybatis框架集成公共模块,包括公共配置、MybatisGenerator扩展插件、通用BaseService、工具类等。
基于bootstrap实现的响应式Material Design风格的通用后台管理系统,zheng项目所有后台系统都是使用该模块界面作为前端展示。
各个子系统前台thymeleaf模板,前端资源模块,使用nginx代理,实现动静分离。
本系统是基于RBAC授权和基于用户授权的细粒度权限控制通用平台,并提供单点登录、会话管理和日志管理。接入的系统可自由定义组织、角色、权限、资源等。用户权限=所拥有角色权限合集+用户加权限-用户减权限,优先级:用户减权限>用户加权限>角色权限
文件存储系统,提供四种方案:
阿里云OSS
服务网关,对外暴露统一规范的接口和包装响应结果,包括各个子系统的交互接口、对外开放接口、开发加密接口、接口文档等服务,可在该模块支持验签、鉴权、路由、限流、监控、容错、日志等功能。示例图:
API网关
内容管理系统:支持多标签、多类目、强大评论的内容管理,有基本单页展示,菜单管理,系统设置等功能。
统一扫码支付
通用用户管理系统, 实现最常用的用户注册、登录、资料管理、个人中心、第三方登录等基本需求,支持扩展二次开发。
微信公众号管理平台,除实现官网后台自动回复、菜单管理、素材管理、用户管理、消息群发等基础功能外,还有二维码推广、营销活动、微网站、会员卡、优惠券等。
微信小程序后台
基于Netty实现SocketIO的实时推送系统。支持命名空间、二进制数据、SSL、ACK等功能。
环境搭建
开发指南
maven编译安装zheng/pom.xml文件即可
启动演示
约定优于配置(convention over configuration),此框架约定了很多编程规范,下面一一列举:
数据库模型
拓扑图
㈥ 微服务框架之Spring Cloud简介
在了解 Spring Cloud 之前先了解一下微服务架构需要考量的核心关键点,如下图:
对于以上等核心关键点的处理,不需要我们重复造车轮, Spring Cloud 已经帮我们集成了,它使用 Spring Boot 风格将一些比较成熟的微服务框架组合起来,屏蔽掉了复杂的配置和实现原理,为快速构建微服务架构的应用提供了一套基础设施工具和开发支持。
Spring Cloud 所提供的核心功能包含:
Spring Cloud架构图
Spring Cloud子项目
Spring Cloud 旗下的子项目大致可以分为两类:
如下:
1. Spring Cloud 与 Spring Boot
Spring Boot 可以说是微服务架构的核心技术之一。通过在 Spring Boot 应用中添加 Spring MVC 依赖,就可以快速实现基于 REST 架构的服务接口,并且可以提供对 HTTP 标准动作的支持。而且 Spring Boot 默认提供 JackJson 序列化支持,可以让服务接口输入、输出支持 JSON 等。因此,当使用 Spring Cloud 进行微服务架构开发时,使用 Spring Boot 是一条必经之路。
2. Spring Cloud 与服务治理( Eureka )
服务治理是 Spring Cloud 的核心,在实现上其提供了两个选择,即 Consul 和 Netflix 的 Eureka 。
Eureka 提供了服务注册中心、服务发现客户端,以及注册服务的 UI 界面应用。
在 Eureka 的实现中,节点之间相互平等,有部分注册中心“挂掉”也不会对整个应用造成影响,即使集群只剩一个节点存活,也可以正常地治理服务。即使所有服务注册节点都宕机, Eureka 客户端中所缓存的服务实例列表信息,也可让服务消费者能够正常工作,从而保障微服务之间互相调用的健壮性和应用的弹性。
3. Spring Cloud 与客户端负载均衡( Ribbon )
Ribbon 默认与 Eureak 进行无缝整合,当客户端启动的时候,从 Eureka 服务器中获取一份服务注册列表并维护在本地,当服务消费者需要调用服务时, Ribbon 就会根据负载均衡策略选择一个合适的服务提供者实例并进行访问。
Spring Cloud 通过集成 Netflix 的 Feign 项目,为开发者提供了声明式服务调用,从而简化了微服务之间的调用处理方式。并且默认 Feign 项目集成了 Ribbon ,使得声明式调用也支持客户端负载均衡功能。
4. Spring Cloud 与微服务容错、降级( Hystrix )
为了给微服务架构提供更大的弹性,在 Spring Cloud 中,通过集成 Netflix 下子项目 Hystrix ,通过所提供的 @HystrixCommand 注解可以轻松为我们所开发的微服务提供容错、回退、降级等功能。此外, Hystrix 也默认集成到 Feign 子项目中。
Hystrix 是根据“断路器”模式而创建。当 Hystrix 监控到某服务单元发生故障之后,就会进入服务熔断处理,并向调用方返回一个符合预期的服务降级处理( fallback ),而不是长时间的等待或者抛出调用异常,从而保障服务调用方的线程不会被长时间、不必要地占用,避免故障在应用中的蔓延造成的雪崩效应。
而 Hystrix 的仪表盘项目( Dashboard )可以监控各个服务调用所消耗的时间、请求数、成功率等,通过这种近乎实时的监控和告警,可以及时发现系统中潜在问题并进行处理。
5. Spring Cloud 与服务网关( Zuul )
Spring Cloud 通过集成 Netflix 中的 Zuul 实现 API 服务网关功能,提供对请求的路由和过滤两个功能
路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础。
过滤器功能则负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础。
通过 Zuul ,可以将细粒度的服务组合起来提供一个粗粒度的服务,所有请求都导入一个统一的入口,对外整个服务只需要暴露一个 API 接口,屏蔽了服务端的实现细节。通过 Zuul 的反向代理功能,可以实现路由寻址,将请求转发到后端的粗粒度服务上,并做一些通用的逻辑处理。此外, Zuul 默认会与 Eureka 服务器进行整合,自动从 Eureka 服务器中获取所有注册的服务并进行路由映射,实现 API 服务网关自动配置。
6. Spring Cloud 与消息中间件( Stream )
Spring Cloud 为简化基于消息的开发,提供了 Stream 子项目,通过建立消息应用抽象层,构建了消息收发、分组消费和消息分片等功能处理,将业务应用中的消息收发与具体消息中间件进行解耦,使微服务应用开发中可以非常方便地与 Kafka 和 RabbitMQ 等消息中间件进行集成。
Spring Cloud Bus 基于 Stream 进行扩展,可以作为微服务之间的事件、消息总线,用于服务集群中状态变化的传播。
比如 Spring Cloud Config 借助 Bus ,可以实现配置的动态刷新处理。
7. Spring Cloud 与分布式配置中心( Config )
针对微服务架构下的配置文件管理需求, Spring Cloud 提供了一个 Config 子项目。 Spring Cloud Config 具有中心化、版本控制、支持动态更新和语言独立等特性。
在 Config 子项目中将微服务应用分为两种角色:配置服务器( Config Server )和配置客户端( Config Client )。使用配置服务器集中地管理所有配置属性文件,配置服务中心可以将配置属性文件存储到 Git 、 SVN 等具有版本管理仓库中,也可以存放在文件系统中。默认采用 Git 的方式进行存储,因此可以很容易地对配置文件进行修改,并实现版本控制。
8. Spring Cloud 与微服务链路追踪( Sleuth )
Spring Cloud 中的 Sleuth 子项目为开发者提供了微服务之间调用的链路追踪。
Sleuth 核心思想就是通过一个全局的 ID 将分布在各微服务服务节点上的请求处理串联起来,还原了调用关系,并借助数据埋点,实现对微服务调用链路上的性能数据的采集。
因此,通过 Sleuth 可以很清楚地了解到一个用户请求经过了哪些服务、每个服务处理花费了多长时间,从而可以对用户的请求进行分析。此外,通过将采集的数据发送给 Zipkin 进行存储、统计和分析,从而可以实现可视化的分析和展示,帮助开发者对微服务实施优化处理。
9. Spring Cloud 与微服务安全( Security )
Spring Cloud Security 为我们提供了一个认证和鉴权的安全框架,实现了资源授权、令牌管理等功能,同时结合 Zuul 可以将认证信息在微服务调用过程中直接传递,简化了我们进行安全管控的开发。
Spring Cloud Security 默认支持 OAuth 2.0 认证协议,因此单点登录也可以非常容易实现,并且 OAuth2.0 所生成的令牌可以使用 JWT 的方式,进一步简化了微服务中的安全管理。
10. Spring Cloud 的其他子项目