13-分布式架构设计九(微服务架构)
xiangliheart
xiangliheart
发布于 2022-03-06 / 12 阅读 / 0 评论 / 0 点赞

13-分布式架构设计九(微服务架构)

微服务架构

大型互联网系统架构必须支持高可用、高伸缩、高并发、安全性的特性。图3-43 所示为一种基于Spring Cloud的大型互联网微服务架构设计,对于每个服务节点的作用和使用场景可以总结为以下11项,作为通用的架构设计蓝本。

(1)     四层负载:使用CDN、硬负载、Nginx集群、网关集群组成四层负载架构,有效保证超高并发和海量请求可以进来。CDN保证静态资源的加载速度,同时不让过多的流量涌入占用大量带宽资源;硬负载将流量负载到Nginx集群;Nginx集群将请求继续负载分发给网关集群;网关集群将请求继续负载分发给上游服务。

(2)     限流降级:在系统承压巨大的情况下可以在Nginx和网关层进行服务限流和API降级、熔断,保证系统的可用性,避免出现雪崩现象。

(3)     Nginx负载:可以在Nginx前面再部署LVS或HAProxy增加一层负载,进一步提升请求接入能力,也可以将Nginx替换为LVS或

HAProxy。

(4)     网关集群:网关可以使用Zuul或Spring Cloud Gateway搭建集群,Spring Cloud Gateway的性能更高,网关层可以通过Hystrix、

Sentinel做限流、熔断、服务降级。

(5)     注册中心:可以使用Nacos、Consul、Eureka、Zookeeper等软件搭建,保证高可用。

(6)     配置中心:可以使用Spring Cloud Config组件配合Git或SVN 搭建,也可以使用Nacos、Consul等软件搭建。

(7)     监控系统:可以使用Spring Boot Admin搭建监控服务,由于没有访问压力,因此也可以部署单节点。

(8)     链路分析、交易采样:可以使用SkyWalking、Zipkin、

Pinpoint等软件搭建。

(9)日志收集:可以使用Elastic Stack搭建,包含Filebeat、

Kafka、Logstash、Elasticsearch、Kibana等,可参见6.8节。

(10)   微服务节点:每个微服务都按照一定的领域进行拆分,每个微服务都对应自己独立的关系型数据库。

(11)   数据库:数据库要提前预估数据量,做好分库分表设计。以关系型数据库为主,以MongoDB、Redis、Elastic、HBase等数据库为辅。

图3-43 基于Spring Cloud的大型互联网微服务架构设计

也可以换个角度来理解一下微服务的分层架构,微服务架构从上到下可以分为客户层、负载层、网关层、业务层、中间件层。微服务分层架构如图3-44所示。

(1)     客户层:Web、iOS、安卓、小程序等各种客户端,以互联网方式访问微服务。

(2)     负载层:利用F5等硬负载设备,HAProxy、Nginx等软负载设备,DNS域名解析等对海量的互联网请求进行多级负载和静态资源缓存。

(3)     网关层:对客户端请求进行限流、降级、安全控制、日志记录、加解密、反向代理、交易路由、交易负载等一系列处理。

(4)     业务层:负责具体系统业务的处理、外联服务的接入,以及微服务的治理。

(5)     中间件层:提供数据库、消息队列、缓存、文件存储等一系列存储和消息服务。

(6)     服务治理区:如图3-44所示,服务治理区包含了微服务架构的重要支撑服务,如注册中心、配置中心、服务监控、链路追踪、日志收集等,网关层和业务层都要与服务治理区紧密连接。

(7)     外联服务区:如图3-44所示,外联服务区主要指系统所对接的支付宝、微信等第三方服务,与当前微服务系统存在相互的调用关系。

图3-44 微服务分层架构


评论