从单体架构到微服务
演进过程
动力:随着业务量的庞大,架构也会越来越复杂
单体架构
将所有功能打包成war或jar包,部署到web容器中
image.png
集群架构
解决业务并行处理能力,降低单机负载;为什么不采用提升单机负载,原因是投入和查出比不高。集群通过增加机器即服务器的横向扩容来分散并发访问流量。
image.png
业务垂直化拆分
通过对业务模块的垂直拆分来业务的耦合度,提升系统的容错性。垂直拆分指可以按照系统的业务功能拆分出多个业务模块。
image.png
服务化改造
通过把子系统共享代码抽离出来形成基础服务来解决冗余代码的问题,SOA是面向服务架构,核心目标是通过服务的流程化来实现业务的灵活性,主要解决信息孤岛,互联互通,业务重用。
微服务架构
微服务架构也是一种面向服务的架构,更强调服务的粒度,所以多个微服务可以组成一个soa服务
微服务和 SOA 架构的区别
微服务是在soa基础上发展起来的,所有他们解决的问题是不一样的。soa主要关注服务的重用性和解决信息孤岛的问题;微服务关注的是通过降低服务的粒度来实现解耦的目的。
Spring Cloud 生态
什么是 Spring-Cloud
spring cloud 可以用来开发微服务,spring cloud 提供了一些可以让开发者快速构建分布式应用的工具,这些服务可以很好的工作在任何分布式环境下。
微服务开发过程中需要解决的问题
网关
客户端调用网关,网关调用多个服务进行聚合成请求的服务,从而减少客户端的调用频次。并且由于网关的聚合,我们还可以在网关层对请求进行统一鉴权和认证; 包括还可以实现限流、请求日志统一记录、 灰度发布等等。类似于biz的功能。
服务的通信和服务发现
通过注册中心来实现
负载均衡
需要一种负载均衡机制来实现请求的分发。
熔断、限流、降级
熔断:防止因请求堆积而导致整个应用雪崩。
降级:当整个系统负载过高时,通过降级某些功能或某些调用从而保证核心业务正常通过。
限流:通过限制访问量来保护系统不被雪崩。
统一配置中心
管理所有的配置。
微服务架构下的组件需求
下面是基于一个请求进来之后,所需要用到的组件和功能
image.png
spring cloud 提 供 了 一 些 解 决 这 类 问 题 的 工 具 , 比 如 服 务 注 册 提 供 了
Eureka/Consoul/zookeeper;远程调用基于 RestTemplate 针对 http 协议调用的封装;负载均衡采用 Ribbon、断路器采用 hystrix;分布式消息基kafka,rabbitMQ;配置中心基于config;链路监控基于 sleuth
Spring Cloud 生态的构建
Spring Cloud 的生态是基于 spring boot 这个微框架来构建的,所以 spring cloud 可以说是基于 spring boot 来对其他框架进行整合。spring boot 并不是一个新的技术,它是基于 spring 框架下对于“约定由于配置(Convention Over Configuration)”理念下的产物,主要是帮助开发人员更容易更快速的创建独立运行和产品级别的基于 spring 框架的应用。
下一代微服务(service Mesh)
什么是 Service Mesh
直接翻译成服务网格。它是一个基础设施层,用于处理服务之间的通信,并且负责请求的可靠传输。
做什么
通过增加一个服务层来做这件事,即service mesh,在每个服务中,会有一个 service mesh 实例,客户端发起一个请求,首先会把请求发送到本地的 service mesh 实例,service mesh 实例中会完成完整的服务之间的调用流程,比如服务发现、负载均衡。最终发送给目标服务,简单来说,它是原有的客户端和服务端之间的一个代理。
image.png
好处
Service Mesh 为业务开发团队降低了门槛,提供了稳定的基础设施,最重要的是,让业务开发团队从微服务实现的具体技术细节中解放出来回归到业务。
网友评论