1.为什么需要微服务
- 传统的单体应用,会随着不断完善变得越来越臃肿
- 传统的单体应用的业务代码不利于理解
- 传统的单体应用随着应用程序变大,启动的时间也会越来越长,如果开发人员需要重启应用服务器,那么需要耗费很长时间
- 想要更新一个功能必须重新部署整个应用程序才能更新
- 在单体应用中任何一个功能出现bug都有很大可能导致应用瘫痪
- 单体应用的技术更换非常困难
2.微服务是什么(微服务的定义)
微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间相互协调,相互配合。为用户提供最终价值的每一个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相协作(通常是基于HTTP协议的RESTful API),每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境,类生产环境等。另外,应当尽量避免统一的,集中式的服务管理机制,对于一个具体的服务而言,应该根据业务上下文,选择合适的语言,工具对其进行构建。
总结如下:
- 一组小的服务
- 独立的进程
- 轻量级通信
- 基于业务能力
- 独立部署
- 无集中式管理
3.微服务的优点
- 代码容易理解(因为这个服务只专注于某个业务)
- 单个服务开发简单,开发效率高(目的明确,切足够小)
- 因为足够小所以,使用当前技术重写旧服务将变得更加可行
- 易于与第三方整合
- 每个服务可以使用不同的语言进行开发
- 可以实现每个服务的独立部署
- 持续集成与持续部署成为可能
- 每个服务都可以独立进行水平扩展
4.微服务的缺点
- 分布式复杂性(如服务通信问题,一致性问题,分布式事务等)
- 运维复杂性
- 测试复杂性
- 最终一致性
5.微服务如何拆分
6.微服务的技术体系
1.接入层(负载均衡器)
负责把外部的流量接入到内部的平台上来(Nginx,LVS等)
2.网关层
属于微服务入口,可以对涌来的请求进行通用处理或特殊处理和转发到具体的服务上
3.业务层
与业务相关的微服务比如:订单服务,支付服务,库存服务,用户服务等
4.支撑服务
想要微服务进行落地需要以下服务进行支撑(比如Nacos,RabbitMQ,Kafka等)
- 注册中心
- 负载均衡
- 服务调用
- 容错限流
- 配置中心
- 监控告警
- 链路追踪
- 认证授权
- 日志聚合
5.平台服务
- 发布系统
- 集群资源调度
- 镜像治理
- 资源治理
- IAM
6.基础设施
- 计算
- 网络
- 存储
- NOC监控
- 安全
- IDC