Spring_Cloud 学习日记(一)
微服务架构的优点
1.易于开发和维护
一个微服务只关注一个特定的业务功能,所以它的业务清晰、代码量少。开发和维护单个微服务相对比较简单的。而整个应用是由若干个微服务构建而成,所以整个应用也会维持在可控的状态。
2.单个微服务启动的速度快
单个微服务的代码量少,所以启动的速度会比较快。
3.局部修改容易部署
单体应用只要有修改,就要重新部署整个应用,微服务解决了这样的问题,一般来说,对某个微服务的修改,不会影响到其他的服务模块,只要重新部署这个修改的模块即可。
4.技术栈不受限
在微服务中,我们可以结合项目业务及团队的特点,合适地选择技术栈。例如某些服务的使用关系型数据库mysql,但是某些微服务使用的是有图形计算的需求,我们可以使用Neo4j;甚至我们可以根据需要部分微服务使用java开发,其他的微服务使用Node.js开发。
5.按需伸缩
我们可以根据自己的需求,实现细粒度的扩展。比如:系统中的某个微服务遇到了瓶颈,我们可以结合这个微服务的业务特点,增加内存,升级cpu或者增加节点。
微服务结构的挑战
1、运维的要求较高
更多的服务意味着更多的运维投入,在单体结构中农,只需要保证一个应用的正常运行;而在微服务中,是需要保证几十甚至几百个服务的正常运行与协作,这给项目的运维带来的巨大的难度。
2.分布式的复杂性
使用微服务架构的是分布式系统,对于一个分布式系统,系统容错,网络延迟,分布式事务等都给我们带来了很大的挑战。
3.接口调整成本高
微服务之间通过接口运行通信。如果修改某一个微服务的API,可能所有使用了改接口的微服务都需要做调整
4.重复劳动
可能很多服务会使用相同的功能,而这个功能并没有达到分解一个微服务的程度,这个时候,可能各个服务都会开发这一功能,导致代码的重复。