Chapter one《SpringCloud微服务实战》

何为微服务架构?

1.“微服务”--> 见于博文http://martinfowler.com/articles/microservices.html

Spring Cloud被戏称为 “全家桶” 的微服务处理框架。

2.一句话概括:将一个原本独立的单体系统拆分成多个微服务,各自独立运行,通过 HTTP的RESTful API 进行通信协作,属于架构范畴的一种设计风格。

3.分布式反例--->单体系统

a.一般通过业务类型来构建一个项目,按照技术划分团队等,或者需求分为:数据库,后端(服务端),前端展示。单体系统往往部署在一个进程内,随着业务需求激增,开发、测试、部署上线臃肿度可想而知
b.系统的性能容量不易评估。

4.微服务的缺点有三

a.运维难度增大
b.服务“员”之间的暗号,“信号必须一致”,接口一致原则。ps:拆分后的微服务,服务“员”之间从老的代码依赖变成了服务通信依赖。业务逻辑依然存在。
c.分布式的“外在”环境复杂:由于是靠通信进行协作,免不了收不到信号的时候。eg:网络延迟、分布式事物、异步消息。。。

ps:微服务实现的敏捷开发和自动化部署等优点盖过了其缺点。

5.九大特性

a.服务组件化。既然由大拆小,那每个小的部件、服务“员”之间就可以独立开发、部署。服务,是一种进程外的组件,通过HTTP协议通信,而传统组件是嵌入到母体工作。
b.按照业务,而非技术划分来组织团队。让每一个服务“员”针对特定的业务达到宽栈、全栈实现,以此可以减少内耗,团队的边界更加清晰。
c.做“产品”的态度。小团队里的每个服务“员”应该以做产品的态度,对待产品的整个生命周期,而不是以完成开发、测试、上线部署并交付给项目负责人为目标。
d.智能端点与哑管道。(对此名词不是很理解)
 单体系统中,组件通过函数调用来交互,而微服务中,有两种方式:一是通过HTTP的RESTful API或者轻量级的消息发送协议。二是类似RabbitMQ等提供可靠异步交换的中间件。
e.去中心化治理。采用轻量级的契约定义接口,使我们对服务本身具体的技术平台不再那么敏感,从而让微服务架构系统中的各个服务针对不同的业务特点选择不同的技术平台。
f.去中心化管理数据。让每一个服务来各自管理自己的数据库。不过会产生问题:“数据一致性”不好保证。解决办法:补偿机制。
g.基础设施自动化。对于运维而言,从一开始就建立“持续交付”平台来支撑整个实施过程,平台所需两大不可缺内容:自动化测试,自动化部署。
h.容错设计。单体系统,一挂全挂。微服务由于各自运行在独立的进程中,一个挂了,其他可以正常。但是也有一个问题,就是服务之间由于调用不到而挂起的线程过多导致阻塞问题。
i.演进式设计。初期并实施设计单体系统,(初期核心业务不太变化,随业务体量增大,后期会将业务中易变的部分或有时间效应的内容进行微服务处理,单体中多变的模块会拆分出来,稳定不变的部分会形成核心微服务存在于整个架构之中。)

6.为何选择Spring Cloud?

服务治理:阿里巴巴开原的Dubbo和当当网在其基础上扩展出来的DubboX、Netflix的Eureka、Apache的Consul等。
分体式配置管理:百度的Disconf、Netflix的Archaius、360的QConf、Spring Cloud的Config、淘宝的Diamond等。
批量任务:当当网的Elastic-Job、LinkedIn的Azkaban、Spring Cloud的Task等。
服务跟踪:京东的Hydra、Spring Cloud的Sleuth、Twitter的Zipkin等。

ps:这些是实施微服务初期都需要考虑的问题,以及一些针对性的开源解决方案。Spring Cloud他不像前面列举的框架那样,只是解决某一个问题,而是一个解决微服务架构实施的综合性解决框架,既整合了已经被广泛实践并证明的框架作为基础部件,又在此基础上创建了一些优秀的边缘组件。

7.Spring Cloud简介

Spring Cloud是一个基于SpringBoot实现的微服务架构开发工具。为微服务中涉及到的:配置管理服务治理断路器智能路由微代理控制总线全局锁决策竞选分布式会话集群状态管理 等操作提供了一个简单的开发方式,包含的子项目有:

  • Spring Cloud Config:配置管理工具,支持使用Git存储配置内容。
  • Spring Cloud Netflix:核心组件,对多个Netflix OSS开源套件进行整合。
    • Eureka:服务治理组件。包含服务注册中心、服务注册与发现机制的实现。
    • Hystrix:容错管理组件。实现断路器模式,帮助服务依赖中出现的延迟和 为故障提供强大的容错能力。
    • Ribbon:客户端负载均衡的服务调用组件
    • Feign:基于Ribbon和Hystrix的声明式调用组件
    • Zuul:网关组件。提供智能路由、访问过滤等功能。
    • Archaius:外部化配置组件
  • Spring Cloud Bus:事件、消息总线,用于传播集群中的状态变化或事件,以触发后续的处理。eg:用来动态刷新配置等
  • Spring Cloud Cluster:针对ZooKeeper、Redis、Hazelcast、Consul 的选举算法和通用状态模式的实现。
  • Spring Cloud Cloudfoundry:与Pivotal 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:基于ZooKeeper 的服务发现与配置管理组件
  • Spring Cloud Starters:Spring Cloud的基础组件。它是基于Spring Boot 风格项目基础依赖模块。
  • Spring Cloud CLI:用于在Groovy 中快速创建Spring Cloud应用的Spring Boot CLI插件。
    。。。。。。以上是常用 的组件。

8.版本名与版本号

由于Spring Cloud不像Spring 社区其他一些项目那样相对独立,它是 一个拥有诸多子项目的 大型综合项目。【大型综合超市VS小摊位?!】可以说是对微服务架构解决方案的综合套件组合。其包含的各个子项目也都独立进行着内容更新与迭代,各自都维护着自己的发布版本号。为了区别开,Spring Cloud没有采用子项目拥有的版本号方式,而是采用命名方式。

image.png
ps:Brixton 的发布子项目更为稳定,Camden更为前瞻。
使用时注意的点:
image.png

谢谢你,读到这里。。。
Less is more.

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,108评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,699评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,812评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,236评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,583评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,739评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,957评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,704评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,447评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,643评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,133评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,486评论 3 256
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,151评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,889评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,782评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,681评论 2 272

推荐阅读更多精彩内容