《全面解析微服务.docx》由会员分享,可在线阅读,更多相关《全面解析微服务.docx(16页珍藏版)》请在优知文库上搜索。
1、1、单体应用传统应用系统多为单体应用、经典三层架构部署:应用-数据库-中间件,关于该业务领域的功能实现全部在一个软件工程中进行开发,集成发布打成一个程序包更新,其主要优点为:(1)系统整体架构简洁清晰,测试、部署及运维比较简便,中小型项目开发快捷;(2)资源占用较低,不需要分布式开俏;单体由于将所有功能模块耦合在一起,导致其存在如下缺点:(1)系统耦合度高,容错能力低,小的问题可能导致整体的不可用;(2)开发周期长.程序代码冗肿,调试复杂、启动时间慢;(3)Bug修复成本高,每一次线上Bug修复需要全局替换、发布;(4)扩展性差,应对高并发、高吞吐能力差;(5)交付周期长,所有功能一起构建、一
2、起部署、一起发布,代码集成爱杂,出错率高;(6)对于大型项目以及需求变化频次高的系统,至构是必然。综合单体应用的优缺点,其比较适合变化频次较低的中小型系统,具体表现为用户最稳定、需求变化不大以及整体开发工程量微小的项目,比较经典的系统有:资产管理系统、资质管理系统、财务系统、人里系统等。(3)易扩展、可前后端分离,应对高并发、大流量的场景下可以快速扩容服务节点增大吞吐;(4)快速迭代、试错成本低,可以实现对业务的快速响应.微服务技术架构包括网关、注册中心、配宜中心、腌路监控、流量控制等内容,整体如下:图:微服务椎架(1)服务集群,根据业务功能模块拆分成一个个独自的项目,每个项目完成独自的功能,
3、每个项目又称为独自的服务,每个服务构成了一个服务集群;(2)注册中心,应用系统拆分成多个服务之后,每个服务都有独立的服务信息(IP地址、端口以及功能等),如何让对方知悉服务信息,需要注册中心模块对服务进行整体管理。每个服务在注册中心中注册,当用户进行调用服务,它首先到注册中心拉取服务信息再去调用相对于的服务.(3)负载均衡,多个服务组成服务集群,在进行服务调用是通过负载均衡分担服务调用流后,实现服务高可用的同时也增加服务的并发吞吐.(4)网关,拆分成多个服务之后,涉及到服务之间的调用,一个服务调用了三个服务的模块,在这个服务里,配置三个调用地址,看起来是不是很麻烦?所以就出现了网关,所有的服务
4、调用都调用到网关,然后在网关里配置路由,进行服务的转发,类似于代理的作用。当然网关需要用合注册中心进行使用,去发现转发到哪个服务上去.是为了校验身份和谙求路由,负载均衡.(5)配SS中心,每个服务都会有各自的配置信息,便于统一管理,使用到配25中心,如果想更改服务的配2S中心,就在配置中心上迸行更改,配在中心会通知相关的服务实现配置的日更新.除上述5大基础组件外,微服务还包括链路监控、流控制(限流、熔断、降级)、日志管理、以及常用的中间件服务(文件.缓存、消息队列等)和服务网格等.整路监控是实现云原生可观测性的方式之一,应用系统微服务拆分后,服务之间相互调用,前台页面的一个请求往往涉及后端多个
5、服务的调用实现,宜杂的调用及实现方式造就了一些列的问题,如:问题定位缓慢、故障影响范围不清以及服务依赖不合理等问题,同时服务调用的性能和实时容量也存在不清晰的地方,相关指标如服务吞吐量TPS、服务响应时间、服务调用失败率等难以量化。通过全错路监控从整体维度到局部维度展示各项指标,将跨应用的所有调用使性能信息集中展现,可方便度量整体和局部性能,并且方便找到故障产生的源头,生产上可极大缩短故障徘除时间.有了全镇珞监控工具,我们能够达到:谙求错路追踪,故障快速定位:可以通过调用链结合业务日志快速定位错误信息;可视化:未复规网柔磨频次采H范图物建设备中间件其他日志采集11志处理日志分笑日志用洗Il志存
6、储存传位!存储用明Il志分析应用展示日书分析日志应用日志挖掘分析nt示从架构的完整性来说,不管是单体应用还是微服务都需要对中间件进展集中管控的,常用的中间件类型有:消息队列服务、缓存服务、分布式文件服务、任务调度服务、流程引擎服务、搜索服务等。对于中间件的管理主要包括标准统一的高可用部署、性能优化和安全加固、调用与被调用的依赖关系以及配目管理等.注册中心图:微服务组件全家桶日志服务网格服务集群配置中心微服务负载均衡中间件链路监控2.2服务网格服务网格是用于处理服务间通信的专用基础设施层,负责在微服务间进行可克地请求传递.服务网格通常通过一组轻量级网络代理来实现,这些代理与应用程序代码一起部署,
7、而不需要感知应用程序本身。随着规模和安杂性的增长,服务网格包含的实现的功能越来越多,它的需求包括服务发现、负载均衡、故障恢宸、指标收集和监控以及通常更加复杂的运维需求,例如A/B测试、金丝雀发布、限流、访问控制和端到端认证等.其部署结构如下图所示:MkrowrvkeSidecar图:服务网格部署图服务网格有如下几个特点: 应用程序间通讯的中间层 轻量级网络代理 应用程序无感知 解耦应用程序的歪试/超时、监控、追踪和服务发现如果用一句话来解释什么是服务网格,可以将它比作是应用程序或者说微服务间的TCP/IP,负责服务之间的网络访问、限流.熔断和监控.对于编写应用程序来说一般无须关心TCP/IP这
8、一层(比如通过HTTP协议的RESTfuI应用),同样使用服务网格也就无须关系服务之间的那些原来是通过应用程序或者其他框架实现的事情,比如SpringCloud、OSS,现在只要交给服务网格就可以了,从而极大地方便了微服务应用的开发.开箱即用:易用性高,如JaVa版本的面向接口代理特性能实现本地透明调用;功能丰富,基于原生库或轻信扩展即可实现绝大多数的微服务治理能力面向超大规模微服务集群设计:极致性能,高性能的RPC通信协议设计与实现;横向可扩展,轻松支持百万规模集群实例的地址发现与流量治理高度可于展:调用过程中对流量及协议的拦截扩展,如Filter.Router.1.B等;截服务治理组件扩展
9、,如Registry、ConfigCenter、MetadataCenter等企业级微服务治理能力:国内公有云厂商支持的事实标准服务福架;多年企业实践经验考验,参考用户实践案例Dubbo核心特性主要有高性能RPC通信协议、自动服务(地址)发现、运行态流量管控、丰富的扩展组件及生态、面向云原生设计等。SpringCloud从个人工作经历来看,由于Dubbo的多年停更,给了SpringCloud在国内的快速发展期,最起码我所熟悉的3家公司在进行系统再构时,皆受限于Dubbo的停更转为使用SpringBoot并逐渐发展为全套的SpringCloud,当然SpringCloud也是非常优秀的框架组合.
10、SpringCloud是分布式微服务架构的一站式解决方案,它提供了一套简单易用的编程模型使我们能在SpringBoot的基础上轻松地实现微服务系统的构建.SpringCloud被称为构建分布式徜!服务系统的“全家桶”,它并不是某一SpringCloud组件描述iHystrix大的容错能力.SpringCloudNetfl基于Ribbon和Hystrix的声明式服务调用组件.ixFeignSpringCloudNetflSpringCloudNetfIiX中的网关组件,提供了智能路由、访问过滤等功能.iZuulSpringCloudGate一个基于Spring5.0,SpringBoot2.0和
11、ProjectReactor等技术开发way的网关框架,它使用Filter链的方式提供了网关的基本功能,例如安全、监控/指标和限流等.SpringCloudConfiSpringCloud的配置管理工具,支持使用Git存储配置内容,实现应用配gM的外部化存储,并支持在客户端对配M进行刷新、加密、解密等操作.SpringCloudBusSpringCloud的事件和消息总线,主要用于在集群中传播事件或状态变化,以触发后续的处理,例如动态刷新配国.SpringCloudStreaSpringCloud的消息中间件组件,它集成了ApacheKafka和RabbitMmQ等消息中间件,并通过定义绑定器
12、作为中间层,完美地实现了应用程序与消息中间件之间的隔离.通过向应用程序昱露统一的Channel通道,使得应用程序不需要再考虑各种不同的消息中间件实现,就能轻松地发送和接收消息.SpringCloud组件描述SpringCloudSleutSpringCloud分布式链路跟踪组件,能够完美的整合TWitter的Zipkin.hSpringCloudAlibabaSpringCloudAlibaba是阿里巴巴结合自身丰富的微服务实践而推出的微服务开发的一站式解决方案,是SpringCloud第二代实现的主要组成部分.SpringCloudAlibaba吸收了SpringCloudNetflix的核
13、心架构思想,并进行了高性能改进.自SpringCloudNetflix进入停更维护后,SpringCloudAlibaba逐渐代替它成为主流的微服务框架.SpringCloudAlibaba包含了多种开发分布式微服务系统的必需组件:SpringCloudAlibaba组件描述Nacos阿里巴巴开源产品,一个更易于构建云原生应用的动态服务发现,配置管理和服务笆理平台.Sentinel阿里巴巴开源产品,把流量作为切入点,从流量控制,熔断降级,系统负载保护等多个维度保护服务的稳定性.RocketMQApacheRocketMQ是一款基于Java的高性能、高吞吐量的分布式消息和流计算平台.Spring
14、CloudAlib描述aba组件DubboApacheDubbo是一款高性能的JaVaRPC框架.Seata阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案.AlibabaCloudOSS阿里云对象存储服务器(ObjeCtStorageService,简称OSS),是阿里云提供的海量.安全、低成本、高可兑的云存储服务.AlibabaCloudSch阿里中间件团队开发的一款分布式调度产品,支持周期性的任务与固定时间edulerx点触发任务.通过SpringCIoudAIibaba的这些组件,我们只需要添加一些注解和少最配置,就可以将SpringCloud应用接入阿里微服务解决方案,
15、通过阿里中间件来迅速搭建分布式应用系统.SpringCIoudAIibaba的应用场空如下:大型复杂的系统,例如大型电商系统;高并发系统,例如大型门户网站、商品秒杀系统;需求不明确,且变更很快的系统,例如创业公司业务系统等.SpringCloud两代实现组件对比如下:组件SpringCIoud(Netflix)SpringCIoudAIibaba(Alibaba)注册中心消息中间件Eureka(2.0孵化失败)无(第三方替代方案:rabbitmq)NacosDiscovery(性能更好,感知力更强)RocketMQ分布式事务解决方案无(第三方替代方案:2PC)Seata分布式调度服务无(第三方替代方案:xxl-job)AlibabaCloudScheduIerX分布式配SS中心SpringCIoudConfig(搭建过程复杂,约定过多,无可视化界面,上手难点大)NacosConfig(搭建过程简单,有可视化界面,配置管理更简单,容易上手)熔断降级Hystrix(停更进维)S