打算了解点微服务方面的知识,就利用国庆长假,泡了五天首都图书馆,
看完了微服务架构入门级书籍 《Spring Cloud 与 Docker 微服务架构实战》
前言
本文并不详尽,而是着重记录 架构关系&第三方库,以备后期学习,方便查找资料
后续有时间,在实战中再按照下面目录,补全系列文章
1 微服务架构概述
文中推荐看这篇微服务的介绍
关于划分微服务边界,确定微服务粒度,
可以参考《领域驱动设计精简版》或《领域驱动设计:软件核心复杂性应对之道》
技术选型:开发框架 Spring Cloud ,运行平台 Docker (也可以是阿里云等云计算平台)
2 微服务开发框架 - Spring Cloud
用于快速构建分布式系统的通用模式的工具集
Spring Cloud 开发的应用程序又叫云原生应用,《十二要素应用宣言(12-factor Apps)》
3 开始使用 Spring Cloud 实战微服务
Spring Cloud 是基于 Java 语言的工具套件,同时也支持 Scala 、Groovy 等语言进行开发
项目管理与构建工具:业界主流 Maven 和 Gradle。文中采用 Maven
4 微服务注册与发现
服务发现组件:即使服务提供者的信息发生变化,服务消费者也无需修改配置文件。
应具备的功能:服务注册表,服务注册与发现,服务检查
Spring Cloud 提供多种服务发现组件的支持,如 Eureka、Consul 和 ZooKeeper
本文以 Eureka 为例,基于JVM
一些语言(非JVM)已有 Eureka Client 的开源实现,如 Node.js 的 Eureka Client
关于 Eureka 的相关讨论,比如自我保护模式的介绍,比如Eureka 与 ZooKeeper 做服务发现的对比
5 使用 Ribbon 实现客户端侧负载均衡
Ribbon 默认为我们提供了很多负载均衡算法,例如轮询、随机等
6 使用 Feign 实现声明式 REST 调用
Feign 是Netflix 开发的声明式、模板化的 HTTP 客户端,其灵感来自 Retrofit 、JAXRS-2.0 以及 WebSocket。
可以更加便捷、优雅的调用 HTTP API ,据我观察,和 Retrofit 用法类似
7 使用 Hystrix 实现微服务的容错处理
Hystrix 是一个实现了超时机制和断路器模式的工具类库。用于隔离访问远程系统、服务或者第三库,防止级联失败(雪崩效应),从而提升系统可用性与容错性
8 使用 Zuul 构建微服务网关
zuul 是 Netflix 开源的微服务网关,可以和 Eureka、Ribbon、Hystrix 等组件配合。
9 使用 Spring Cloud Config 统一管理微服务配置
Spring Cloud Config 为外部化配置提供了服务端和客户端支持,包括 Config Server 和 Config Client 两部分。
10 使用 Spring Cloud Sleuth 实现微服务跟踪
微服务之间通过网络进行通信,网络常常很脆弱,网络资源也有限。
能够跟踪每个请求,了解请求经过哪些微服务(从而了解信息是如何在服务之间流动)、请求耗费时间、网络延迟、业务逻辑耗费时间等指标,进而更好的分析系统瓶颈、解决系统问题,很重要!
Spring Cloud Sleuth 与 Zipkin 配合使用。
Zipkin 是 Twitter 开源的分布式跟踪系统,基于 Dapper 的论文设计
11Spring Cloud 常见问题与总结
后续整理
12 Docker 入门
Docker 的官方网站 与 Github ,开源的容器引擎,可将应用程序和基础设施层隔离,并且能将基础设施当作程序一样进行管理。
最常用且默认的 Docker Registry 是官方的 Docker Hub
13 将微服务运行在 Docker 上
使用 Dockerfile 构建 Docker 镜像。
Dockerfile 是一个文本文件,其中包括若干条命令,指令描述了构建镜像的细节
使用 Docker Registry 管理 Docker 镜像
包括公有Docker Registry 与 私有Docker Registry
14 使用 Docker Compose 编排微服务
使用 Docker Compose 管理容器
Docker Compose 将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container)。
一个工程可包含多个服务,一个服务可包括多个容器实例。
听一个老男人说,Docker 貌似对 Mac 系统不太有好,
本机环境访问大文件时,Mac文件系统等待时间比较长。
待续...
うずまき ナルト
网友评论