初步认识微服务

  一、传统SOA系统架构

  从上图可以看出,SOA的思路是把应用中相近的功能聚合到一起,以服务的形式提供出去,因此基于SOA的架构应用可以理解为一批服务的组合。SOA将原来的单体架构按照功能细分为不同的子系统,然后再由各个子系统依赖服务中间件来调用所需服务。

  二、微服务架构

  微服务架构已将传统的单体架构中的订单服务、商品服务和用户服务拆分为了独立的服务,其中的每一个服务都是一个独立的应用,且可以访问自己的数据库,所以数据库可以有多个-分布式,这些服务队外提供公共的API,并且服务之间可以相互调用。

  三、微服务架构与SOA架构的区别

  四、构建微服务架构

    4.1 将系统拆分为微服务

      · 通过业务功能分解并定义与业务功能相对应的服务。

      · 将域驱动设计分解为多个子域。

      · 按照动词或用例分解,并定义负责特定操作的服务,例如一个负责完成订单的航运服务。

      · 通过定义一个对给定类型的实体或资源的所有操作负责的服务来分解名次或资源,例如一个负责管理用户账户的账户服务。

    4.2 微服务架构的组件

      服务注册中心:注册系统中所有服务的地方
 
      服务注册:服务提供方将自己调用地址到服务注册中心,让服务调用方能够方便地找到自己
 
      服务发现:服务调用方从服务注册中心找到自己需要调用的服务的地址
 
      负载均衡:服务提供方一般以多实例的形式提供服务,使用负载均衡能够让服务调用方连接到合适的服务节点。
      服务容错:通过断路器(也称熔断器)等一系列的服务保护机制,保证服务调用者在调用异常服务时快速地返回结果,避免大量的同步等待。
 
      服务网关:也成API网关,是服务调用的唯一入口,可以在这个组件中实现用户鉴权、动态路由、灰度发布、负载限流等功能。
 
      分布式配置中心:将本地化的配置信息注册到配置中心,实现程序包在开发、测试、生产环境的无差别性,方便程序包的前一。
 
      健康检查
 
      日志处理
 
    4.3 微服务架构的搭建
     话不多说,先上图
 

    微服务架构部署了一系列的服务,例如上图的订单服务、商品服务、会员服务等等,每个微服务都会访问自己的数据库。当这些微服务启动时,会将信息注册到服务中心,在客户端发送请求时,请求首先会被API网关所拦截,API网关会读取请求数据,并从注册中心获取对应的服务信息,然后API网关会根据服务信息调用所需的微服务。

    4.4 微服务架构技术选型

      · 微服务实例的开发:Spring Boot、Jboss公司的Swarm和java ee官方的KumuluzEE等

        · 服务的注册与发现:架构中服务的注册与发现功能,可以使用Spring Cloud Eureka、Zookeeper、Consul、Etcd、Dubbo

      · 负载均衡:Spring Cloud Ribbon、Dubbo

      · 服务容错(熔断机制):Spring Cloud Hystris

      · API网关:Spring Cloud Zuul、Spring Reactor、Netty或NodeJS

      · 分布式配置中心:Spring Cloud Config

      · 调试:Swagger

      · 部署:Docker,开源的应用容器引擎,启动速度快,适合轻量级的应用。

      · 持续集成:Jenkins搭建自动化部署系统,并使用Docker进行容器化封装。

    

    使用Spring Boot实现微服务实例的开发,使用Spring Cloud Eureka来实现服务的注册与发现,使用Spring Cloud Hystrix的断路器功能来实现服务容错,使用Spring Cloud Ribbon实现服务间的负载均衡,使用Spring Cloud Zuul实现服务网关,使用Spring Cloud Config作为分布式配置中心,使用Swagger对微服务进行测试,并使用Jenkins的持续集成功能来实现自动化部署。

猜你喜欢

转载自www.cnblogs.com/ggmm20141012/p/11224303.html