SpringCloud和微服务

微服务概述

马丁福勒微服务论文https://martinfowler.com/articles/microservices.html

什么是微服务
- 目前的微服务并没有一个统一的标准,一般是以业务来划分
- 将传统的一站式应用,拆分成一个个的服务,彻底去耦合,一个微服务就是单功能业务,只做一件事。

微服务与微服务架构
- 微服务是一种架构模式或者一种架构风格,提倡将单一应用程序划分成一组小的服务==独立部署==,服务之间相互配合、相互协调,每个服务运行于自己的==进程==中。
- 服务与服务间采用轻量级通讯,如HTTP的RESTful API等

- 应当尽量避免统一的、集中式的服务管理机制

微服务的优缺点
#### 优点
1. 每个服务足够内聚,足够小,比较容易聚焦
2. 开发简单且效率高,一个服务只做一件事情
3. 开发团队小,一般2-5人足以(当然按实际为准)
4. 微服务是松耦合的,无论开发还是部署都可以独立完成
5. 微服务能用不同的语言开发
6. 易于和第三方集成,微服务允许容易且灵活的自动集成部署(持续集成工具有Jenkins,Hudson,bamboo等)
7. 微服务易于被开发人员理解,修改和维护,这样可以使小团队更加关注自己的工作成果,而无需一定要通过合作才能体现价值
8. 微服务允许你融合最新的技术
9. ==微服务只是业务逻辑的代码,不会和HTML,CSS或其他界面组件融合==。
10. ==每个微服务都可以有自己的存储能力,数据库可自有也可以统一,十分灵活==

#### 缺点
1. 开发人员要处理分布式系统的复杂性
2. 多服务运维难度,随着服务的增加,运维的压力也会增大
3. 依赖系统部署
4. 服务间通讯的成本
5. 数据的一致性
6. 系统集成测试

7. 性能监控的难度

微服务的技术栈


为什么选SpringCloud作为微服务架构
#### 选型依据
1. 整体解决方案和框架的成熟度
2. 社区热度
3. 可维护性
4. 学习曲线

#### 当前各大IT公司的微服务架构
1. 阿里Dubbo/HSF
2. 京东JSF
3. 新浪Motan

4. 当当DubboX

各微服务的框架对比



SpringCloud入门概述
- Spring的三大模块:SpringBoot(构建),Spring Cloud(协调),Spring Cloud Data Flow(连接)

SpringCloud是什么
- 分布式系统的简化版(官方介绍)
- SpringCloud基于SpringBoot提供了一整套微服务的解决方案,包括服务注册与发现,配置中心,全链路监控,服务网关,负载均衡,熔断器等组件,除了基于Netflix的开源组件做高度抽象封装之外,还有一些选型中立的开源组件
- SpringCloud利用SpringBoot的开发便利性巧妙地简化了分布式系统的基础设施开发,SpringCloud为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线,全局所、决策精选、分布式会话等等,他们都可以用SpringBoot的开发风格做到一键启动和部署。
- ==一句话概括:SpringCloud是分布式微服务架构下的一站式解决方案,是各个微服务架构落地技术的几何体,俗称微服务全家桶==

SpringCloud和SpringBoot的关系
SpringBoot:专注于快速方便的开发单个个体微服务(关注微观)
SpringCloud:关注全局的微服务协调治理框架,将SpringBoot开发的一个个单体微服务组合并管理起来(关注宏观)
- ==SpringBoot可以离开SpringCloud独立使用,但是SpringCloud不可以离开SpringBoot,属于依赖关系==

Dubbo是怎么到SpringCloud的?哪些优缺点去技术选型

前成熟都互联网架构(分布式+服务治理Dubbo)https://github.com/dubbo

https://github.com/spring-cloud


最大区别:
- Spring Cloud抛弃了RPC通讯,采用基于HTTP的REST方式。Spring Cloud牺牲了服务调用的性能,但是同时也避免了原生RPC带来的问题。REST比RPC更为灵活,不存在代码级别的强依赖,在强调快速演化的微服务环境下,显然更合适。
- ==一句话:Dubbo像组装机,Spring Cloud像一体机==
- 社区的支持与力度:Dubbo曾经停运了5年,虽然重启了,但是对于技术发展的新需求,还是需要开发者自行去拓展,对于中小型公司,显然显得比较费时费力,也不一定有强大的实力去修改源码

总结:1. 解决的问题域不一样:Dubbo的定位是一款RPC框架,Spring Cloud的目标是微服务架构下的一站式解决方案

SpringCloud的参考资料

https://projects.spring.io/spring-cloud/

[SpringCloud的中文参考资料]: https://springcloud.cc/spring-cloud-netflix.html

[SpringCloud的中文API]: https://springcloud.cc/spring-cloud-dalston.html

http://cloud.spring.io/spring-cloud-static/Dalston.SR1/

[SpringCloud中国社区]: http://springcloud.cn/
[SpringCloud中文网]: https://springcloud.cc/

猜你喜欢

转载自blog.csdn.net/qq_35508033/article/details/80752676