坚持是一件特别好滴事情~
001什么是微服务
“微服务”一词源于Martin Fowler 的名为Microservices的博文
微服务是系统架构上的一种设计风格,是将一个原本独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间通过基于HTTP的RESTful API进行通信写作。
并且每个服务都维护自身数据存储,业务开发,自动化测试案例以及独立部署机制。
002 微服务架构的九大特性(来自Microservices一文中提炼)
1、 服务组件化
微服务架构中,需要对服务进行组件化分解。每一个服务都独立开发、部署,可以有效避免一个服务的修改引起整个系统重新部署
2、 按业务组织团队
在面对大型项目的时候,对于微服务团队的拆分更加建议按业务线的方式进行拆分,可以有效减少服务内部修改产生的内耗,而且使团队编辑可以变得更为清晰。
3、 做“产品”的态度
需要做产品的态度来对待每一个微服务,对其产品的整个生命周期负责,持续关注服务的运作情况,并不断分析以帮助用户来改善业务功能。
4、 智能端点与哑管道
微服务架构中,因为服务不在一个进程中,组件的通信模式发生改变,如果仅将原本在进程内的方法调用改为RPC方式调用,会导致微服务之间产生烦琐的通信,这样使得系统表现的更为糟糕,因此需要更为粗粒度的通信协议。
在微服务架构中,通常会采用以下2种服务调用方式:
一种,使用HTTP的RESTful API或轻量级的消息发送协议,实现信息传递与服务调用的触发
另一种,通过在轻量级消息总线上传递消息,类似RabbitMQ等一些提供可靠异步交换的中间件。
5、 去中心化治理
在实施微服务架构时,通过采用轻量级的契约定义接口,使得微服务中的各个组件能针对不同业务特点选择不同的技术平台。
6、 去中心化管理数据
实施微服务时,希望让每一个服务来管理其自有数据库。虽然这样可以使数据管理更加细致化,但是数据一致性的问题需要注意。
在微服务架构中,更强调在各服务之间进行“无事务”调用,而对于数据一致性,只要求数据在最后的处理状态是一致的即可;若在过程中发现错误,通过补偿机制来进行处理,使得错误数据能够达到最终的一致性。
7、 基础设施自动化
在微服务架构中,务必从一开始就构建起“持续交付”的平台来支撑整个实施过程,该平台需要2大内容,缺一不可:
自动化测试
自动化部署
8、 容错设计
由于服务都运行在独立的进程中,所以存在部分服务出现故障,而其他服务正常运行的情况。
要快速检测出故障源并尽可能地自动恢复服务是必须被设计和考虑的
9、演进式设计
以演进的方式进行系统的构建,一般会将一些经常变动或是有一定时间效应的内容进行微服务处理,并逐渐将原来在单体系统中多变的模块逐步拆分出来,而稳定不太变化的模块就形成一个核心微服务存在于整个微服务架构之中。
003 SpringCloud
是基于SpringBoot实现的微服务架构开发工具,涉及配置管理、服务治理、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作
SpringCloud包含多个子项目,
例如:
Spring Cloud Config。配置管理工具
Spring Cloud Netflix,核心组件,对多个Netflix OSS开源套件进行整合。包括:Eureka服务治理组件、Hystrix容错管理组件、Ribbon客户端负载均衡的服务调用组件、Feign基于Ribbon和Hystrix的声明式服务调用组件、Zuul网关组件、Archaius外部化配置组件。
Spring Cloud Bus,事件消息总线
Spring Cloud Cluster:针对Zookeeper、Redis、Hazelcast、Consul的选举算法和通用状态模式的实现
Spring Cloud Consul:服务发现于配置管理工具
Spring Cloud Stream
Spring Cloud AWS 简化Amazon Web Service的组件
Spring Cloud Security 安装工具包
Spring Cloud Sleuth :Spring Cloud应用的分布式跟着实现
Spring Cloud ZooKeeper:基于Zookeeper的服务发现与配置管理组件
Spring Cloud Starters: Spring Cloud的基础组件
Spring Cloud CLI:用于在Groovy中快速创建Spring Cloud应用的spring boot CLI插件
等等
版本说明
版本名采用的是伦敦地铁站的名字,根据字母表的顺序来对应版本时间顺序例如Angel.SR6,Brixton.SR5,SR6、SR5就是版本号了
当一个版本的Spring Cloud项目的发布内容积累到临界点或者一个严重bug解决可用后,就会发布一个“service releases”版本,简称SRX版本,其中X是一个递增数字,Brixton.SR5就是Brixton的第5个Release版本
网友评论