体系化认识微服务之三:微服务总体技术架构

Posted rhwayfunn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了体系化认识微服务之三:微服务总体技术架构相关的知识,希望对你有一定的参考价值。

体系化认识微服务之三:微服务总体技术架构

这篇文章,介绍下微服务的总体架构体系,微服务拆分后涉及的服务众多,我们从一个全局的视角看下微服务架构涉及哪些方面。从上层到下层依次分为:接入层、网关、业务服务层、支撑服务层、平台服务层、基础设施层
技术构架总览:

接入层

接入层是入口,比如支付宝,接入层包括手机APP、Web、H5,是流量的入口,负责把外部的流量接入到系统的内部。

网关

流量来后需要经入网关,网关的作用是智能路由、请求转发、监控、用户验证、限流、熔断等,网关的出现解决的主要问题客户端不需要与后端细粒度的微服务进行通信,只需要与网关提供的一个统一的REST API通信就能完成一次完整的请求。

比如获取一个商品的信息,对于客户端来说只需要访问http ://xx.com/product?id=1就能拿到所有的商品明细,然而这个api转发到后台的微服务可能需要调用购物车服务、商品服务、商品明细服务、促销服务等众多服务才能拿到完整的商品信息。除此之外,后台的微服务通信复杂,如果客户端直接与微服务通信一是导致客户端需要关心每个微服务的作用,而这根本不是客户端应该关心的;而是导致后端服务重构困难,服务的升级改造都需要通知客户端并作相应的更改。

网关基础组件:Netflix Zuul、nginx

服务层

服务层就是后端的微服务了,按照之前文章提到的服务拆分原则,微服务可以分为数据层服务和业务服务。网关的请求会路由到各个微服务,通常服务层会有很多公用的东西,比如配置、开发框架、持续交互、工程开发规范等,这些都是开发微服务不可缺少的东西。

配置:Disconf、Apollo、spring cloud config
开发框架:springboot、spring cloud
持续交互:jenkins、maven、gradle、IDE(IntelliJ家族、eclipse)
工程规范:alibaba code guidelines、checkstyle

支撑服务

支撑服务包括注册发现、集中配置、认证授权、日志聚合、监控报警、容错限流、后台服务
注册发现:springcloud consul、dubbo
集中配置:disconf、spring cloud config
认证授权:CAS、Spring Cloud Security + oauth2.0
日志聚合:elk + log4j2
监控报警:influxdb + grafana
链路监控:pinpoint、zipkin、CAT
熔断限流:hystrix、dubbo mock
后台服务:MQ、Cache、schedule Job

平台服务

平台服务包括发布系统、集群资源调度、镜像治理、资源治理、IAM
发布系统:微服务的线上发布不可能每个都让运维支持,所以发布系统可以让运维零参与,工程师可以在平台完成打包、机器分发和发布整个过程
集群资源调度:容器调度
镜像治理:如果使用了容器,比如Docker会涉及镜像治理
IAM:权限管控

基础设施

基础设施包括计算、存储、网络、IDC

以上是关于体系化认识微服务之三:微服务总体技术架构的主要内容,如果未能解决你的问题,请参考以下文章

微服务架构学习与思考(04):微服务技术体系

体系化认识微服务之二:如何实施微服务架构

体系化认识微服务之二:如何实施微服务架构

体系化认识微服务之二:如何实施微服务架构

体系化认识微服务之一:什么是微服务

体系化认识微服务之一:什么是微服务