一、什么是微服务架构:
微服务是系统架构上的一种设计风格,它的主旨是讲一个原本独立的系统拆分成多个小型服务,服务之间通过基于HTTP的RESTful API进行通信协作。由于轻量级的通信协议做基础,所以这些微服务可以使用不同的语言编写。
二、与单体系统的区别:
传统企业框架中,针对一个复杂的业务需求通常使用对象和业务类构建一个项目,项目中通常分为三大部分:数据库、服务端处理、前端展示。但是随着业务量等因素的影响系统会变得越来越臃肿,难以维护,修改一个地方会关联许多地方。维护成本越来越大。
为了解决系统庞大臃肿的问题,产生了微服务架构。把一个系统的功能拆分成多个服务,这些服务独立部署和扩展。因为是独立部署因此更容易发现系统的瓶颈位置,做出更好的系统评估等。
三、如何实施微服务
微服务拆分后的问题:1、运维的新挑战 2、接口的一致性 3、分布式的复杂性 等
微服务的九大特性:
1、服务组件化
2、按业务组织团队
3、做“产品”的态度
4、智能端点与哑管道
5、去中心化治理
6、去中心化管理数据
7、基础设施自动化
8、容错设计
9、演进式设计
四、Spring Cloud简介
Spring Cloud是基于Spring Boot实现的微服务架构开发工具。他为微服务架构中涉及的配置管理、服务治理、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供一种简单的配置方式。
Spring Could包含多个子项目如下:
1、Spring Cloud Config:配置管理工具,支持使用Git存储配置信息,可以使用他实现应用配置的外部存储,并支持客户端配置信息刷新、加密解密配置内容等。
2、Spring Cloud Netfix:核心组件,支持多个Netflix OSS开源套件进行整合。
Eureka:服务治理组件,包含服务注册中心、服务注册与发现机制的实现。
Hystrix:容错管理组件,实现断路器模式,帮助服务依赖中出现的延迟和为故障提供强大的容错能力。
Ribbon:客户端负载均衡的服务调用组件。
...
3、Spring Cloud Bus:事件、消息总线,用于传播集群中的状态变化或时间,以及触发后续处理,比如用来动态刷新配置。
4、Spring Cloud Cluster:针对Zookeeper,Redis、Hazelcast、Consul的选举算法和通用状态模式的实现。
。。。