微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。
其实和 SOA 架构类似,微服务是在 SOA 上做的升华,微服务架构强调的一个重点是“业务需要彻底的组件化和服务化”,原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用。这些小应用之间通过服务完成交互和集成。
微服务的目的就是为了解耦,采用微服务架构可以轻松的将各个业务环境下的各个业务系统串联起来,中心数据库可以通过中心服务实现管理,各业务系统只需调用中心服务就能实现登录验证及组织机构、人员、角色、权限等的管理。
微服务架构 = 80%的SOA服务架构思想 + 100%的组件化架构思想 + 80%的领域建模思想。
组件 | 选型 | 备注 |
网关 | Zuul | 如果前端后端移动端调用后台系统,统一走zull网关进入,有zull网关转发请求给对应的服务 |
服务注册与发现 | Eureka | 服务启动时,Eureka会将服务注册到EurekaService,并且EurakeClient还可以返回过来从EurekaService拉去注册表,从而知道服务在哪里 |
服务调用 | Feign | 基于fegin的动态代理机制,根据注解和选择机器,拼接Url地址,发起请求 |
负载均衡 | Ribbon | 服务间发起请求的时候,基于Ribbon服务做到负载均衡,从一个服务的对台机器中选择一台 |
断路器 | Hystrix | 发起的请求是通过Hystrix的线程池来走,不同的服走不同的线程池,实现了不同的服务调度隔离,避免服务雪崩的问题 |