一、什么是微服务?
- 就目前而言,对于微服务,业界没有一个统一的标准的定义
- 微服务市一中架构模式,它是一种架构风格,提倡将单一的应用程序划分成一组小服务。每个服务独立运行在自己的进程内(模块化)
1.1 微服务的优缺点
优点
- 单一职责原则
- 每个服务足够内聚,足够小,代码容易理解
- 开发简单,开发效率高,一个服务可能只专一干一件事
- 可以使用不同的开发语言
- 易于和第三方集成,微服务允许容易且灵活的方式集成部署
- 微服务允许利用最新技术
- 微服务只是业务逻辑代码,不会和 HTML、CSS 或其他界面
混合 - 每个微服务都有自己的储存能力,可以有自己的数据库,也可以有统一的数据库
缺点
- 开发人员要处理分布式系统的复杂性
- 服务间通信成本变高
- 随着服务的增加,运维的压力也相对变大
- 系统部署依赖
- 数据一致性
- 系统集成测试
- 性能监控
1.2 微服务技术栈
| 微服务条目 | 落地技术 |
|---|---|
| 服务开发 | Spring、Spring Boot、Spring MVC |
| 服务配置与管理 | Netfix 公司的 Archaius、阿里的 Diamond 等 |
| 服务注册与发现 | Eureka、Consu、Zookeeper 等 |
| 服务调用 | Rest、RPC、gRPC |
| 服务熔断器 | Hystrix、Envoy 等 |
| 服务接口调用 | Feign 等 |
| 消息队列 | Kafka、RabbitMQ、ActiveMQ 等 |
| 服务配置中心管理 | SpringCloudConfig、Chef 等 |
| 服务路由(API网关) | Zuul 等 |
| 服务监控 | Zabbix、Nagios、Metrics、Specatator 等 |
| 全链路追踪 | Zipkin、Brave、Dapper 等 |
| 服务部署 | Docker、OpenStack、Kubernetes 等 |
| 数组流操作开发包 | SpringCloud Stream(封装与Redis、Rabbit、Kafka等发送接收消息) |
| 时间消息总线 | SpringCloud Bus |
1.3 为什么选择 SpringCloud 作为微服务架构
- 选型依据
- 整体解决方案和框架的成熟度
- 社区热度
- 可维护性
- 学习曲线 - 当前各大 IT 公司用的微服务架构有哪些?
- 阿里:dubbo + HFS
- 京东:JFS
- 新浪:Motan
- 当当网:DubboX - 各微服务框架对比

微服务是一种将大型应用程序拆分为一组小型、独立的服务的架构模式,每个服务都能独立部署和运行。其优点包括模块化、技术栈多样化和易于集成,但同时也带来了分布式系统的复杂性、服务间通信的挑战和运维压力。SpringCloud因其成熟度、社区支持和易用性成为微服务落地的热门选择。常见的微服务技术栈涉及服务开发、注册发现、调用、熔断、监控等多个方面。不同公司如阿里、京东等有各自的微服务实现,如Dubbo和JFS。

被折叠的 条评论
为什么被折叠?



