总结:在未来的发展中,随着数据量的增长,企业的不断数字化,不断上云,SpringCloud因为其基于Java为基的特点,生态完整且丰富,能在企业使用占有率中迅速增长。 (题外话,基于国内几乎以java为企业开发的基础)
1.类似于Hadoop核心组件的YARN(资源调度器功能):
微服务是通过请求串联起各个服务之间的关系,通俗点说就是将原来的一个项目通过功能模块,拆分为多个项目,通过网络请求调用其他项目的对外开放的接口,而微服务是通过一个中间件来调度各个项目,将服务注册到中间件上后该中间件监控各个项目的状态是否正常,通过其他的一些请求调度组件来分发请求,如ribbon,dubbo等。而将各模块的拆分,有能够使各个模块能够独立部署,对一些请求频率较高的模块可以灵活部署,比如登录注册模块可能一天请求量才几万次,单独部署一台服务器,而订单模块一天会有上千万笔订单,我可能就会在这个基础上将订单模块分别部署到多台服务器做负载。
微服务是一种思想,分而治之的思想,解耦合的思想。在用户体验层面上,微服务也更适合互联网项目,因为当你将项目拆分后,当其中的某一个模块出现问题,并不会影响整个项目,比如订单创建,和订单的后续处理拆分开来,当创建一笔订单后在创建第二笔订单时,订单创建模块宕机,或者oom,在传统项目中,后续的订单处理,包括登录等等模块都会失效,但是微服务思想却能避免这种问题。
2、Spring Cloud可以帮助解决这些问题:
使用Spring Boot开发分布式微服务时面临以下问题:
与分布式系统相关的复杂性----这里包括网络问题,延迟,带宽问题,安全性问题。
服务发现----服务发现工具管理群集中的进程和服务如何查找并相互通信。它涉及服务目录,在该目录中注册服务,然后能够在该目录中查找并连接到服务。
冗余----分布式系统中的冗余问题。
Loadbalancing----负载平衡改善跨多个计算资源的工作负荷,诸如计算机,计算机集群,网络链路,中央处理单元,或磁盘驱动器的分布。
性能问题----由于各种运营开销而导致的性能问题。
部署复杂性----对Devops技能的要求。
3.SpringCloud优点:
1、服务拆分粒度更细,有利于资源重复利用,有利于提高开发效率,节约资源。
2、可以更精准的制定优化服务方案,提高系统的可维护性。
3、微服务架构采用去中心化思想,服务之间采用Restful等轻量级通讯,比ESB更轻量
4、适于互联网时代,产品迭代周期更短。
4.SpringCloud缺点:
1、微服务过多,治理成本高,不利于维护系统
2、分布式系统开发的成本高(容错,分布式事务等)对团队挑战大
但是优点大于缺点,目前SpringCloud是一套非常完善的分布式框架,目前很多企业开始用微服务。