1、分布式服务框架其余组成html
上一节《分布式服务框架(一)》讲述了RPC发展到SOA的过程,常见的SOA服务治理方案,以及分布式系统中常见的专业名词,这部分其实只是涉及到了一个分布式系统架构的轮廓,真正一个系统的构建,还须要不少模块互帮互助,协同工做和其余相关平台的搭建。
架构
一个大型,稳健,成熟的分布式系统的背后,每每会涉及众多支撑运做的系统,咱们统称这部分系统为分布式系统架构中的基础设施,下面将介绍一些常见甚至必用的基础设施。框架
(1)CI/CD平台:即持续集成/持续交付,持续集成是指软件我的研发的部分向软件总体部分交付,频繁进行集成以便更快地发现其中的错误,持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」(此解释来自https://blog.csdn.net/eugenelee2096/article/details/73332615)说得这么复杂,无非就是开发代码过程当中持续的提交,而后进行持续的代码扫描,单元测试,编译构建,完成如上流水线后迅速的部署到目标环境上容许的过程。异步
(2)ConfigCenter:即配置中心,为各应用的全部环境提供了一个中心化的外部配置,为服务端和客户端提供了分布式系统的外部化配置支持。分布式
(3)Web Portal/IDE:集成应用配置,管理平台的统一入口和开发IDE。ide
(4)Deploy Center:部署中心,全部的服务,不管是公共SAAS服务仍是业务服务,开发完成后都需部署到对应的区域和环境上,部署中心提供了发布应用包的平台供开发者进行发包部署操做,或提供接口供CI/CD的接入。性能
(5)公共SAAS:即整个分布式系统中公用的服务,常见的有权限服务,数据字典,国际化等单元测试
(6)服务注册中心:服务注册中心,是分布式服务系统中的一个重要组成模块,管理Provider的Manager,在实际的运行环境中,服务注册中心Registry被动通知或Consumer主动询问,在Provider有节点宕机或新增节点时,客户端也可实时感知到,从而避免了某个Provider被无限调用或是无限闲置测试
(7)Maven,Git仓库管理:Maven仓库用来存储和管理开发和部署应用过程当中所需的JAR或ZIP文件,Git用来存储开发者代码,提供了代码合成,分支管理等功能。url
(8)日志中心:服务运行过程当中,不可避免的会出现各类问题,如何快速定位并分析清楚这些问题的根因,并提出有效的解决方案,日志在这其中扮演了很重要的角色,日志中心经过收集Consumer或Provider产生的日志,为用户查询下载日志提供了可视化平台。
(9)监控中心:接收来自Consumer和Provider异步上报的性能监控数据,对有风险的节点发出告警
(10)事件中心:事件中心是高度可缩放的数据流式处理平台和事件引入服务,能够处理和存储分布式软件和设备生成的事件、数据或遥测
2、完整的分布式系统设计
以上所述基础设施都是分布式系统中重要或不可缺乏的部分,怎么将这些基础设施整合到一块儿,使整个分布式系统可以协调运做,下面展现了我的对于这方面的理解。
开发者接入到对应的IDE开发平台,选择对应的产品(Maven或Gradle)构建工程,经过分支管理等措施的落实,进行代码的编写,提交,合并,以后提交CI平台进行代码检查,编译构建,单元测试并部署到部署中心,也可脱离CI进行手动部署。
无论开发者开发的是公共SAAS仍是业务服务,都会经过部署中心部署到对应的环境区域,业务服务从配置中心拉取应用配置信息,将服务注册发布到注册中心,并可任意调用环境中周边的公共SAAS服务。
服务在运行过程当中,将日志以异步消息的形式上传到日志中心,此处也可由日志中心进行主动收集。同时将性能等方面的数据上报到监控中心,监控中心发现异常后,会对用户发出告警。监控中心还包括一个事件上报模块,收集容器的运行情况和产生的事件等数据,对服务的运行做出必要的决策。