
“微服务”指的是把一个原本独立的系统拆分成多个微小的服务,每一个小的服务都是在各自的进程中独立运行,各个微服务之间通过restful风格通信,每个微服务都可以用各自的语言编写,各自的数据库,只需要对外部的微服务提供访问接口即可。
微服务有什么优点,有什么缺点呢:
跟单体服务对比较:说白了单体应用的耦合度是很高的,随着业务增多,我们为了修改或者增添一个功能而不得不让其他业务或者功能停止,这就导致了不是很方便。单体应用中的资源类型的利用率有很大的不确定性,我们对于单体应用的系统容量很难有确定的概念。微服务可以解耦合,清晰资源的利用情况,降低了代码的维护成本。
但是分布式也是有诸多缺点的:
1.增加了运维的成本.
2.对于接口的严谨性要求更高,因为代码的依赖虽然消除了,但是接口之间的逻辑依赖依然存在,所以接口设计要遵循开闭原则。
3.分布式的环境要求更加的苛刻:比如网络延迟,分布式事务,异步消息等等都要纳入考虑范围之内。
实施微服务,springcloud是一种集诸多组件于一体的一个容器,是一种实施方案,但是也有其他的设计方案,比如诸多组件的拼凑使用:
比如服务治理:Dubbo,Consoul,DubboX,Eureka,Apache
批量任务:ElasticJob,Spring-Batch
服务跟踪:HyDra,ZipKin,Sleuth
配置管理:Disconf,QConf,SpringConfig等等
这些都可以搭配这使用,根据脚骨的需求DIY.
SpringCloud,SpringCloud包含的诸多组件有:
SpringCloudConfig:配置管理
SpringCloudNetFlix:对Eureka(服务治理),Hystrix(降级熔断),Ribbon(负载均衡),Feign(服务通信),Zuul( 网关)的整合。
SpringCloudBus:时间消息总线:用于传播集群中的状态变化或者事件,从而触发后续处理,比如动态刷新配置。
SpringCloudConsul:服务发现鱼配置管理工具。
SpringCloudSecurity: 安全组件
SpringCloudSleuth:对应用的跟踪。
SpringCloudZookeeper:服务发现与治理
组件差不多这些,还有好些个不常用。
SpringCLoud各个版本的区别:
结束。