美文网首页
Spring Cloud 与 Docker 微服务架构

Spring Cloud 与 Docker 微服务架构

作者: 南窗云 | 来源:发表于2018-10-07 16:29 被阅读0次

打算了解点微服务方面的知识,就利用国庆长假,泡了五天首都图书馆,
看完了微服务架构入门级书籍 《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 等组件配合。

Netflix 如何使用 Zuul

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文件系统等待时间比较长。


待续...

うずまき ナルト

相关文章

网友评论

      本文标题:Spring Cloud 与 Docker 微服务架构

      本文链接:https://www.haomeiwen.com/subject/rgslaftx.html