基于SpringCloud微服务系统设计方案之欧阳家百创编

上传人:碎****木 文档编号:220862671 上传时间:2021-12-09 格式:DOCX 页数:24 大小:122.54KB
返回 下载 相关 举报
基于SpringCloud微服务系统设计方案之欧阳家百创编_第1页
第1页 / 共24页
基于SpringCloud微服务系统设计方案之欧阳家百创编_第2页
第2页 / 共24页
基于SpringCloud微服务系统设计方案之欧阳家百创编_第3页
第3页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《基于SpringCloud微服务系统设计方案之欧阳家百创编》由会员分享,可在线阅读,更多相关《基于SpringCloud微服务系统设计方案之欧阳家百创编(24页珍藏版)》请在金锄头文库上搜索。

1、欧阳家百创编微办事系统设计方案1.欧阳家百2022.03.072. 微办事实质微办事架构从实质上说其实就是散布式架构,与其说是一种新架构,不如说是一种微办事架构气概。简洁来说,微办事架构气概是要开发一种由多个小办事组成的应 用。每个办事运行于自力的进程,并且实行轻量级交互。大都状况下是一个 的资源 API。这些办事具备自力业务力量并可以通过自动化支配方法自力支配。这种气概使最小化集中治理,从而可以使用多种不合的编程语言和数据存储技术。对微办事架构系统,由于其办事粒度小,模块化清楚,因此首先要 做的是对系统整体进展功能、办事规划,优先考虑如何在交付过程 中,从工程实践动身,组织好代码构造、配置、

2、测试、支配、运维、监控的整个过程,从而有效表达微办事的自力性与可支配性。本文将从微办事系统的设计阶段、开发阶段、测试阶段、支配阶段进展综合论述。理解微办事架构和理念是核心。欧阳家百创编3. 系统环境名称版本说明JDK1.8Spring BootSpring FrameworkRibbonkafka RabbitMQ4. 微办事架构的挑战 牢靠性:由于实行远程调用的方法,任何一个节点、网络呈现问题, 都将使得办事调用失败,随着微办事数量的增多,潜在故障点也将增多。也就是没有充分的包管机制,那么单点故障会年夜量增加。 运维要求高:系统监控、高可用性、自动化技术 散布式庞杂性:网络延迟、系统容错、散

3、布式事务 支配依靠性强:办事依靠、多版本问题 性能办事间通讯本钱高:无状态性、进程间调用、跨网络调用 数据全都性:散布式事务治理需要跨越多个节点来包管数据的瞬时全都性,因此比起传统的单体架构的事务,本钱要高很多。另外,在散布式系统中,通常会考虑通过数据的最终全都性来解决数据瞬时全都带来的系统不成用。 重复开发:微办事理念崇尚每个微办事作为一个产品对待,有自己的团队开 发,甚至可以有自己完全不合的技术、框架,那么与其他微办事团队的技术共享就产生了冲突,重复开发的工作即产生了。没有最好的,只有最适合自己的。5. 架构设计5.1. 思维设计微办事架构设计的根本目的是实现价值交付,微办事架构只有遵循D

4、evOps 理念方可进展的更顺畅,思维方法的转变是最重要的。实现微办事技术架构,现有产品需要进展技术上的改进以及相关配套办事的实现,实行分阶段实施、以及试点产品优先实施的战略, 主要包含如下:一、技术上的改进:1、前后端别离,web 前端通过 / s 协议调用微办事的 API网关,由 API 网关再经过路由办事调用相应的微办事2、不合微办事之间通过REST 方法相互调用3、微办事之间通过消息中间件实现消息交互机制二、配套办事与功能实现 :1、需要进展相应的自动化办事实现,包含自动化构建、自动扮装置支配、自动化测试、自动化平台宣布Docker 实现2、治理办事,对微办事架构,必需配套相应的监控与

5、治理办事、日志治理办事等3、协作办事,运用 DevOps 思想提升开发、测试、运维的高效沟通与协作,实现开发与运维的一体化5.2. 微办事架构设计1、我们把整个系统依据业务拆分红假设干个子系统或微办事。2、每个子系统可以支配多个应用,多个应用之间使用负载均衡。3、需要一个办事注册中心Eureka,全部的办事都在注册中心注册,负载均衡也是通过在注册中心注册的办事来使用肯定战略来实现。Eureka 可支配多个,进展高可用包管。4、全部的客户端都通过同一个网关地址访问后台的办事,通过路由配置ZUUL 网关来推断一个URL 恳求由哪个办事处理。恳求转发到办事上的时候使用负载均衡Ribbon。5、办事之

6、间实行 feign 进展调用。6、使用断路器 hystrix,准时处理办事调用时的超时和毛病, 避开由于其中一个办事的问题而招致整体系统的瘫痪。7、还需要一个监控功能,监控每个办事调用花费的时间等。8、使用 SpringCloud Config 进展统一的配置治理,需要考虑与公司的配置治理平台如何协作使用。9、Hystrix,监控和断路器。我们只需要在办事接口上添加Hystrix 标签,就可以实现对这个接口的监控和断路器功能。10、Hystrix Dashboard,监控面板,他供给了一个界面,可以监控各个办事上的办事调用所消耗的时间等。11、Turbine,监控聚合,使用 Hystrix 监

7、控,我们需要掀开每一个办事实例的监控信息来检查。而Turbine 可以帮助我们把全部的办事实例的监控信息聚合到一个处所统一检查。这样就不需要挨个掀开一个个的页面一个个检查。架构的牢靠性包管:在关键节点做主备、集群支配,避开单点故障。待后续确认问题:1、Access Control:Zuul 网关供给了相关把握功能,与我司 CAS如何结合使用2、Config Server:Spring Cloud 供给了远程配置中心,与我司的配置治理平台如何结合使用6. 设计阶段6.1. 总体设计1、功能规划:对产品功能进展拆分,拆分为假设干个微办事;一个功能可以创立多个微办事并支配在多个办事器节点上,以便进展

8、负载均衡。2、设计原子办事层,梳理和抽取核心应用、公共应用,作为自力的办事下沉到核心和公共力量层,渐渐形成稳定的办事中心,使应用能更快速的响应多变的客户需求。3、为每个办事设计 API 接口REST 方法4、为不合的办事进展分类,不合类型的办事需要的资源不合, 可以配置不合的资源,包含CPU、内存、存储等。6.2. 办事拆分原那么1、粒度微小:依据业务功能划分办事粒度,总的原那么是办事内部高内聚, 办事之间低耦合。2、责任单一:每个办事只做一件事,即单一职责原那么。3、隔离性原那么:每个办事相互隔离,且不相互影响4、业务无关优先原那么:根底办事,是一些根底组件,与具体的业务无关。比方:短信办事

9、、邮件办事。这里的办事最简洁划分出来做微办事,也是我们第一优先级别离出来的办事。6.3. 办事规划为实现负载均衡,允许一样的办事在多个节点注册一样的办事名,不合的端口。假设没有前期的规划,不合的办事供给者可能会注册一样的办事名,招致消费者调用办事时产生调用混乱。因此,需进展办事名的统一规划:1、规划期统一制定每个办事供给者的办事名或者模块标示。2、办事名的命名规章:ModuleName_ServiceName,且全部字符小写, 不合单词之间以下划线分隔。如用户治理模块供给了猎取用户信息的办事,那么命名为:user_get_info。3、新增办事名时,需要提出申请,审批通过前方可使用,为削减审批

10、庞杂度,可只审批 ModuleName,即在模块内部可以自由增加办事名,不需要进展审批。6.4. 开发战略总体原那么:不合的微办事需进展物理隔离。1、SVN 战略:SVN 上创立自力的分支,不合微办事的代码提交不受相互影响;由配置治理员统一把握。问题:开发分支与集成分支,都将增加很多,维护工作量增加。2、编译战略:代码编译时,各个微办事自力编译、打包,根绝直接的依靠;3、工程构建:代码开发时,各微办事创立自力的工程,工程之间不克不及产生直接依靠4、连续集成:每个微办事自力执行连续集成。5、版本集成:由统一的集成工具,实现自动化的版本集成,将全部微办事集成到统一的版本宣布包中。6.5. 版本战略

11、每个微办事可以自力制作版本,陪伴着办事的增多,SVN 分支增多,版本也将增多,版本治理的庞杂度将成指数级增加。在办事之间依靠较多时,每个办事的升级或降级都将影响其他办事的正常运行。因此需执行如下战略:1、全部办事的版本制作交由专业的版本治理员执行。2、实行自动化的版本制作战略,最年夜水平的削减人工操纵。3、每个办事的版本必需有具体的版本方案、版本说明,对版本说明要制定模板,明确需要提交的内容、版本号、SVN 标签等。4、对工程经理的要求提升,需对整体的版本方案有严格的制定, 尤其是版本之间的依靠关系要很是明确,版本升级、降级的风险评估需完全充分。5、接口治理:严格执行接口治理制度,任何接口的变

12、动必需进展审批、发公告等流程。6.6. 数据库挑战与战略每个微办事都有自己自力的数据库,那么后台治理的联合查询怎么处理?这应当是年夜家会普遍遇到的一个问题,有三种处理方案。1严格依照微办事的划分来做,微办事相互自力,各微办事数据库也自力,后台需要呈现数据时,调用各微办事的接口来猎取对应的数据,再进展数据处理后呈现出来,这是标准的用法,也是最麻烦的用法。2) 将业务高度相关的表放到一个库中,将业务关系不是很严密的表严格依照微办事模式来拆分,这样既可以使用微办事,也避开了数据库分别招致后台系统统计功能难以实现,是一个折中的方案。3数据库严格依照微办事的要求来切分,以满足业务高并发,实时或者准实时将

13、各微办事数据库数据同步到 NoSQL 数据库中,在同步的过程中进展数据清洗,用来满足后台业务系统的使用,推举使用MongoDB、HBase 等。第一种方案适合业务较为简洁的小公司;其次种方案,适合在原有系统之上,渐渐演化为微办事架构的公司;第三种适合年夜型高并发的互联网公司。建议,我们以后实行其次种方案。6.7. 负载均衡使用Ribbon 进展负载均衡,其工作原理可以归纳综合为下面四个步调:不再实行一般的增加负载均衡办事器的方法进展负载均衡,如 F5、Nginx、LVS 等,而是把负载均衡的功能以库的方法集成到办事消费方的进程内,这种方案称为软负载均衡Soft Load Balancing 或

14、者客户端负载均衡。在Spring Cloud 中协作 Eureka 的办事注册功能,Ribbon 子工程那么为REST 客户端实现了负载均衡。1.Ribbon 首先依据其所在Zone 优先选择一个负载较少的EurekaServer;2. 按期从 Eureka Server 更新并过滤办事实例列表;3. 依据指定的负载均衡战略,从可用的办事器列表中选择一个办事实例的地址;4. 然后通过RestClient 进展办事调用。Ribbon 自己供给了下面几种负载均衡战略:RoundRobinRule: 轮询战略,Ribbon 以轮询的方法选择办事器,这个是默认值。所以例如中所启动的两个办事会被循环访问

15、;RandomRule: 随机选择,也就是说 Ribbon 会随机从办事器列表中选择一个进展访问; BestAvailableRule: 最年夜可用战略,即先过滤出故障办事器后,选择一个以后并发恳求数最小的; WeightedResponseTimeRule: 带有加权的轮询战略,对各个办事器响应时间进展加权处理,然后在实行轮询的方法来猎取相应的办事器; AvailabilityFilteringRule: 可用过滤战略,先过滤出故障的或并发恳求年夜于阈值一局部办事实例,然后再以线性轮询的方法从过滤后的实例清单中选出一个; ZoneAvoidanceRule: 区域感知战略,先使用主过滤条件区域负载器,选择最优区域对全部实例过滤并前往过滤

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 教育/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号