当前位置: 移动技术网 > IT编程>软件设计>架构 > 《Spring Cloud微服务实战》读书笔记之基础知识1

《Spring Cloud微服务实战》读书笔记之基础知识1

2018年10月03日  | 移动技术网IT编程  | 我要评论

摘要

微服务是一种系统架构的设计风格,它主旨在于将一个原本独立的系统,拆分成多个独立运行的小型服务。不同服务之间通过restful接口进行通讯协作。

关键词:spring cloud微服务

一、什么是微服务

微服务是一种系统架构的设计风格,它主旨在于将一个原本独立的系统,拆分成多个独立运行的小型服务。不同服务之间通过restful接口进行通讯协作。

  • 拆分的小型服务围绕系统耦合度高的业务功能进行构建;
  • 每个服务都维护自身的数据存储(如何维护?)、业务开发、测试、部署机制;
  • 由于是轻量级通讯协作,微服务可以使用不同语言来编写;

二、如何实施微服务

引入微服务(与单体应用对比)引发的问题:

  • 运维:维护进程数增加,需要一定的开发能力来编排组织进程;
  • 接口:需要交互双方协调发布,完善接口和版本管理,保证接口的正确调用;
  • 分布式环境:拆分后服务只能通过通信来进行协作,所以要考虑分布式环境的因素(网络延迟、分布式事务、异步消息)

为了解决前面的问题,以下是实施微服务一些原则:

1、服务组件化

保证每个服务都独立开发、部署,避免一个服务修改引起整个系统的重新部署。

2、按业务组织团队

从按技术层面转为按业务划分团队。(减少沟通成本)

3、以产品态度对待服务

对服务整个生命周期负责,持续关注服务的运作情况。

4、智能端点与哑管道原则

使用微服务不能简单将函数调用直接改成restful/rpc调用(避免繁琐的通信),微服务常用两种服务调用方式:

  • 基于http的restful api(或其它轻量级的消息发送协议) - 请求响应模型,同步阻塞
  • 基于轻量级消息总线(mq) - 观察模型

关于智能端点与哑管道的概念
关于智能端点与哑管道的概念,我是这样理解:

  • 哑管道是指消息的通讯,管道是不会通知端点消息的内容、结构,仅提供一个可靠的信息交互功能,称为“哑”。
  • 智能端点是指端点要主动订阅管道的消息,去解析里面的内容,称为“智能”。

5、去中心化治理

整个架构采用轻量级协议定义接口,各个组件根据具体业务特点进行技术选型。

6、去中心化管理数据

每个服务管理其自有的数据库。(在改造过程中,将数据库的数据拆分到其它数据库中(mysql、mongodb、redis))

面临的新问题:

  • 分布式事务,所以尽量避免事务,保证各服务之间是"无事务"的调用;
  • 一致性问题,保证最终一致性;

7、基础设施自动化

由于服务数量的增多,务必需要一个“持续交付”平台来支持实施。
自动化测试与自动化部署。

8、容错设计

微服务架构中,可能存在部分服务故障的情况,处理不好会出现故障蔓延的情况。(一个正常服务频繁调用故障服务、导致大量线程挂起等待超时,最后正常服务也出现了故障)
所以微服务架构中,应快速监测出故障源并尽可能恢复服务。(对每个组件的运行情况(服务状态、断路器状态、吞吐量、网络延迟等)实现监控和日志记录)

9、演进式设计

实施微服务应该以演进的方式构建。

三、spring cloud 简介

spring cloud 是一个基于spring boot 实现的微服务架构解决方案。提供了配置管理、服务治理、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作的简单开发方式。

spring cloud 子项目介绍:

  • spring cloud config:配置管理工具
  • spring cloud netflix:核心组件
    • eureka:服务治理组件,服务注册中心、服务注册与发现机制
    • hystrix:容错管理组件,实现断路器模式
    • ribbon:客户端负载均衡调用组件
    • feign:基于ribbon和hystrix的声明式服务调用组件
    • zuul:网关组件
    • archaius:外部化配置组件
  • spring cloud bus:事件、消息总线
  • spring cloud cluster:针对zookeeper、redis、hazelcast、consul的选举算法和通用状态模式的实现。
  • spring cloud cloudfoundry:与private cloudfoundry的整合支持。
  • spring cloud consul:服务发现与配置工具。
  • spring cloud stream:通过redis、rabbit或kafka实现消息微服务,通过重简单的声明式模型来发送和接收消息。
  • spring cloud aws:用于简化整合amazon web service组件
  • spring cloud security:安全工具包,提供在zuul代理中对oauth2客户端请求的中继器。
  • spring cloud sleuth:spring cloud 应用的分布式跟踪实现,可以完美整合zipkin。
  • spring cloud zookeeper:基于zoopeer的服务发现与配置管理组件。
  • spring cloud starters:spring cloud 的基础组件,它是基于spring boot 风格项目的基础依赖模块。
  • spring cloud cli:用于在groovy中快速创建spring cloud 应用的spring boot cli插件。

springcloud微服务架构图(转自黑马视频):
springcloud微服务架构图(转自黑马视频).png

参考资料

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网