第十讲---关于微服务架构

前言:

        目前在部门中涉及的项目基本上都是微服务架构,所以根据项目经验和相关资料写写关于对微服务的理解。如有错误,欢迎指出,不胜荣幸!

正文:

一、微服务架构的特点:

        1、微服务将传统的单体应用(如SSM、SSH框架)拆分成网络服务,来实现模块化组件;

        2、根据微服务架构的服务划分来分组职能团队,减少跨团队沟通;

        3、一个服务对应一个团队,团队人员负责需求、设计、开发、测试等,开发之后在团队内进行运维和运营,不需要交付给其他团队;

        4、去中心化、去SOA服务化的中心服务治理和去企业服务总线;

        5、微服务注重服务的合理拆分、分层和构造,可建设自动化持续发布平台,并进行敏捷开发和部署;

        6、具备兼容性设计、容错性设计和服务的契约设计。

        注:关于第2和第3点,可以参见下图中的“传统服务的职能团队”和“微服务的职能团队”

图1 传统服务的职能团队

图2 微服务的职能团队

二、Spring Boot

        Spring Boot是Spring Cloud构建微服务架构的基础。

        在JEE时代,企业级开发涉及到的通用功能被提取到容器层实现。如下图所示:

Tomcat容器负责管理服务的启动、停止、监控、配置、日志等,应用开发人员只要按照规范将应用打包成war包,并发布到Tomcat容器中,就可以对外提供服务了。注意:这个时代的应用是包含在容器内的。

图3 传统应用框架

        而Spring Boot的思路则刚刚好相反,它将容器嵌入到自启动的jar包中,在Spring Boot应用启动时,内部启动嵌入的容器,然后通过内嵌的服务器将应用中提供的服务暴露。

图4 Spring Boot应用框架

        相比于传统的应用框架,Spring Boot框架的优点很明显:

1、可以创建独立、自启动的应用程序,不需要构建war包并发布到容器中;

2、通过Maven定制化标签,可快速创建应用程序;

3、很大程度自动化配置Spring,大大减少了人工配置各项参数;

4、基本上没有XML配置;

5、提供性能分析、健康检查等功能配置。

三、Spring Cloud Consul

        Spring Cloud Consul主要包括:服务发现组件Consul、容错性组件Hystrix、智能路由组件Zipkin和客户端负载均衡组件Ribbon。其交互流程如下图所示:

1、服务注册在Consul服务器实例上;

2、Zipkin作为一个特殊的服务在Consul上注册并发现服务;

3、Zipkin作为网关,将发现的服务导出给PC网站、APP、开放平台使用;

4、RestTemplate/FeignClient使用简单的服务调用方法调用服务1、服务2等。

        

图5 Spring Cloud Consul交互流程

        Spring Cloud Consul具有如下特点:

1、服务在Consul实例中注册,由Spring管理的Bean来发现和调用;

2、通过配置的方式可以启动嵌入式的Consul服务器;

3、Feign客户端通过声明的方式即可导入服务代理;

4、Zipkin使用Ribbon服务实现客户端的负载均衡;

5、通过声明的方式即可插入Hystrix客户端(部门项目中还没有使用);

6、通过配置的方式即可启动Hystrix面板服务器;

7、在Sping环境中可以直接配置Spring Cloud Consul组件;

8、Zipkin可以自动注册过滤器和路由器,形成一个方向代理服务器;

9、Hystrix面板服务器可以对服务的状态进行监控,并提供容错机制。

尾话:

        推荐书籍:《分布式服务架构 原理、设计与实践》

猜你喜欢

转载自my.oschina.net/linxxbaobao/blog/1823206