微服务简介
- 微服务架构是一项在云中部署应用和服务的新技术。大部分围绕微服务的争论都集中在容器或其他技术是否能很好的实施微服务,而红帽说API应该是重点。
微服务可以在“自己的程序”中运行,并通过“轻量级设备与HTTP型API进行沟通”。关键在于该服务可以在自己的程序中运行。通过这一点我们就可以将服务公开与微服务架构(在现有系统中分布一个API)区分开来。在服务公开中,许多服务都可以被内部独立进程所限制。如果其中任何一个服务需要增加某种功能,那么就必须缩小进程范围。在微服务架构中,只需要在特定的某种服务中增加所需功能,而不影响整体进程。
垂直系统VS微服务
- 垂直系统弊端:
1、随着业务量得增加,复杂性逐渐变高、代码解耦太深,不利于开发和维护
2、技术债务逐渐积累加剧,很多代码都是为了解决问题而开发
3、阻碍新技术得引入和使用,只能依赖于原有旧得技术框架开发
4、无法进行高可用、负载均衡、水平扩展和合理得伸缩
5、部署得服务速度会随着代码累积逐渐变慢、性能降低、随着数据量增大下降
微服务架构
一个微服务需要有清晰得业务边界、高度得模块化服务化解耦。每个模块都完成自己得功能,并且每个模块都可以灵活得使用自己本身所需得技术,他们之间相互独立部署运行,又可以相互进行数据通信,可以使用Rest方式,也可以使用RPC方式,更可以使用消息中间件进行消息总线处理。
微服务优缺点
优点:
扩展性强、便于开发和维护,局部修改简单。
启动较快、性能、压力测试更有针对性。调节CPU、内存、磁盘IO性能等参数指标方便。
技术栈不受限制,可以使用任何技术框架、也可以选择其他编程语言实现。
可伸缩性、可扩展性、高可用性都可控,可调节。
缺点:
运维要求比较高,需要分布式监控、自动化部署测试等。
分布式得复杂性、逻辑复杂、跟踪复杂、以及分布式事物等问题。
接口调试、模块与模块之间联调测试比较复杂。
Spring Cloud 概述
Spring Cloud是一系列框架得有序集合("肯德基缤纷全家桶")。它利用SpringBoot得开发便利性巧妙地简化了分布式系统基础设施得开发。都可以用SpringBoot得开发风格做到一键启动和部署。Spring并没有重复造轮子,知识将目前各家公司开发得比较成熟、经得起考研得服务框架组合起来,通过SpringBoot风格进行封装屏蔽掉了复杂得配置和实现原理,最终给开发这流出一套简单易懂、容易部署和易维护得分布式系统开发工具包。
Spring Cloud生态各类组件,涵盖了服务治理组件Eureka、客户端负载均衡组件Ribbon、服务容错保护组件Hystix、声明式服务调用组件Fegin、API网关治理组件Zuul、分布式配置中心组件Config、消息总线组件Bus、消息驱动组件Stream、分布式服务跟踪组件Sleuth。
大概了解Spring Cloud后,接下来开始服务治理组件Eureka代码讲解。