- 什么是微服务
微服务一词,源于Marting Fowler的名为Microservices的博文,可以在它的官方博客上找到 http://martinfowler.com/articles/microservices.html.
简单的说,微服务是系统架构上的一种设计风格,它的主旨是将一个原本单个的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间通过基本的通信协议进行协作沟通.由于通信时基于通用协议,所以这些微服务可以使用不同的语言来编写.
- 微: 体现在小型,之所以小,是因为相对于拆分之前的应用变得小了.
- 服务:体现在调用,只要通过网络访问的资源api都可以看成是一个服务
所以按照这个概念,之前ou系统所拆分出来的order和user都可以是一个独立的微服务.之所以结构变化成这种微服务的样子,就是为了解决以往单体项目的各种运维,开发,管理困难的问题.
2 什么是微服务框架
当单体系统变得庞大臃肿之后,功能越来越复杂,相对拆分出来的微服务就越来越多,之间的通信调用关系也会变得错综复杂,这样就产生了维护,开发成本过高的问题,所以微服务框架就诞生了.
在微服务框架中,我们可以实现服务组件化,去中心化治理,自动化测试部署等一系列提高开发部署效率,降低运维开发成本的好处.
spring cloud概括
2.1介绍
spring cloud 是一个基于Spring boot实现的微服务架构综合工具.它为微服务架构中涉及的配置管理,服务治理,断路器,智能路由,微代理,控制总线,全局锁,决策竞选,分布式会话和集群状态管理等操作提供了丰富的,简单的组件开发的方式.是目前最流行的一种轻量级微服务框架技术--实现了全面功能的架构技术.
2.2为什么选择spring cloud
在微服务领域中,众多优秀的开发人员,公司,和团队都曾经为此付出了很多辛苦,得以目前市场上有非常多的选择处理微服务框架技术的手段.
- 阿里巴巴的dubbo dobboX
- Netflix的Eureka
- Apache的Consul
- 百度的Disconf
- 360的Qconf
- spring cloud的config
- 淘宝的Diamand
- 当当网的Elastic-Job
- linkedIn的Azkaban
- 京东的Hydra
- Twitter的zipkin
……
可以说不同领域精英辈出,各领风骚.但是SpringCloud的出现,可以说是对微服务架构的巨大支持和强有力的技术后盾.它不像上述举例的那样,每一个只是解决了微服务框架技术汇总的某一个问题,或一部分,spring cloud是一个解决微服务框架实现的综合性解决方案,它整合了诸多被广泛使用和证明过的框架作为实施的基础部件,又在该体系上创建了一些优秀的边缘组件.这个就好比是: 如果你对计算机组件非常了解,是高手,那么你可以选择不同公司生产的不同组件cpu 主板 显卡…来DIY你的电脑,但是绝大多数人不是这样的高手,所以他们选择了品牌机,spring cloud就是我们在微服务框架领域中选择的"品牌机"
后续我们要在spring cloud+spring boot的框架基础之上来进行互联网框架技术的学习.
spring cloud 组件
- spring cloud netflix:核心组件,包含了很多重要的基础套件
- eureka:服务治理组件,包含服务注册中心,服务注册与发现机制的实现
- Ribbon:客户端负载均衡的服务调用组件,有了它,拆分出来的微服务内部不在需要nginx这种软件代理
- Hystrix:容错管理组件(熔断器),实现断路器模式,帮助服务依赖中出现的延迟和故障提供强大的容错能力.
- zuul:网关组件,提供智能路由,访问过滤的功能.
- feign:基于ribbon和hystrix的声明式服务调用组件.
- spring cloud config:配置管理工具,支持远程使用git中心,存储配置内容,可以使用它来实现应用配置的外部化存储.并且支持客户端配置信息刷新.加密处理.
springcloud 目前还处在发展壮大过程中,随着微服务的功能需求不断的进步,spring cloud也会变得越来越庞大.