@[小张学长]微服务简介
【废话:第一篇文章 连续三周没休息,今天休息一天,突然想把技术笔记梳理一下,分享给大家相互学习。同时方便自己阅读 】
#什么是微服务?(参考于微服务架构提出者马丁福勒先生论文)
微服务化的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底地去耦合,每一个微服务提供单个业务功能的服务,一个服务做一件事,从技术角度看就是一种小独立的处理过程,类似进程概念,能够自行单独启动或销毁,甚至可以拥有自己独立的数据库。
#微服务优缺点?
优点:
- 开发简单、开发效率高,一般一个服务只做一件事,这样使得代码容易理解。
- 微服务是松耦合的,具有功能意义的服务,无论是在开发阶段、还是在部署阶段都是相对独立的
- 微服务能使用不同的语言开发,同时也易于第三方集成,微服务允许容易且灵活的集成自动糊部署,通过集成工具。
- 微服务只是业务逻辑的代码,不会和前端和其他界面组件混合。
- 每个微服务可拥有独立的数据库。
缺点:
1.多个服务运维难度,随着服务的增加,运维的压力也在加大。
2.服务间通信成本
3.保证数据的一致性
4.系统集成测试
为什么选择springcloud作为微服务架构?
目前主流的微服务架构主要分为两大“帮派”:
阿里系:spring+dubbo+zookeeper
spring生态圈:springcloud全家桶
以下是微服务框架对比:
功能点 | 备选方案 | 备选方案 | 备选方案 | 备选方案 | 备选方案 |
---|---|---|---|---|---|
服务框架 | NetFlix/Spring cloud | Motan | gRPC | Thrift | Dubbo/DubboX |
功能定位 | 完整的微服务框架 | RPC框架,整合了ZK或Consul,实现集群的基础的服务注册和发现 | RPC框架 | RPC框架 | 服务框架 |
支持Rest | 支持 Ribbon支持多种可插拔的序列化选择 | 否 | 否 | 否 | 否 |
支持Rpc | 否 | 是 | 是 | 是 | 是 |
支持多语言 | 是 | 否 | 是 | 是 | 否 |
服务注册/发现 | 是(Eureka) Eureaka是服务注册表 Karyon服务端框架支持服务自注册和健康检查 | 是(zookeeper/consul) | 否 | 否 | 否 |
springcloud是什么?(官话)
基于springboot提供了一套微服务解决方案,包括服务注册与发现,配置中心,全链路监控,服务网关,负载均衡,熔断器等组件,除了基于NetFlix的开源组件做高度抽象封装之外,还有一些选型中立的开源组件,俗称微服务全家桶。
springcloud和springboot是什么关系?
springboot专注于快速方便的开发单个个体微服务。
springcloud专注全局的微服务协调整理治理框架。
springboot可以离开springcloud独立使用开发项目,而springcloud离不开springboot,属于依赖关系。
springcloud与dubbo对比
dubbo是基于RPC通信,springcloud采用的是基于http的rest方式
在这里插入代码片