下列哪个不是Spring Cloud的优势( )
A.
每个微服务有自己的数据库,服务之间数据库是独立的
B.
降低了开发以及部署维护的难度
C.
不同的服务可以根据需求用不同的语言实现
D.
降低了服务与服务之间的耦合,让系统具有很有的扩展性
下列不是常见负载均衡算法的是( c)
A.
轮询法
B.
随机法
C.
最大连接数法
D.
源地址哈希法
答案错误:0 分
//选C不对吗
基于new bing部分指引作答:
下列不是Spring Cloud的优势的选项是:
C. 不同的服务可以根据需求用不同的语言实现。
Spring Cloud并不限制使用不同的语言来实现不同的服务。它主要提供了一套工具和框架,用于构建和管理分布式系统中的微服务,并通过各种方式实现服务之间的通信、负载均衡等功能,而语言选择并不受限制。
关于常见的负载均衡算法的选项:
C. 最大连接数法 并不是常见的负载均衡算法。
常见的负载均衡算法包括轮询法、随机法和源地址哈希法。这些算法用于在负载均衡器(如Nginx)或服务网关(如Spring Cloud Gateway)等中决定将请求分发给哪个后端服务实例。然而,最大连接数法并不是一个常见的负载均衡算法。
两个都选C
下图左侧是一个单体服务,右侧是一个微服务群:
左侧的单体架构,所有的模块放在一起,共享UI以及数据库等资源。
右侧的微服务,每个模块单独运行,并且每个模块有自己的数据库。例如订单模块是IO密集的,它的数据可能使用Redis进行存储;而电影模块的数据适合使用关系型数据库,那么它的数据可能使用Mysql进行存储。它们相互之间通过一系列轻量级的通信机制进行通信。
所以这里可以得出,微服务的优点为:
●易于开发和维护
针对单个的某一个微服务模块,因为它只关注某一块业务(例如订单),所以业务难度和代码量都会小很多。
●启动较快
因为系统按照业务被分成了一个个单独的模块,每个模块都只专注于自己的业务,所以这些模块都是中小型工程,启动起来相对于启动整个单体应用来说,绝对快很多。
●局部修改容易部署
对某些业务的改动,只需要重新部署该业务相关的微服务模块即可,无需将整个项目重新部署。
●技术栈不受限
系统按照业务被分成了一个个单独的模块,每个模块都可以使用完全不同的技术栈,因为各个模块之间是通过轻量级的通信机制进行通信的,开发语言的关联性为零。
●按需伸缩
每个模块可以根据自己的业务需求,给不同的模块进行不同角度的软硬件的升级即可。
●DevOps
有很多自动化的工具来辅助我们开发和运维(Docker容器等)
除了上面的优点,同时微服务也给我们带来了一些挑战:
●运维要求更高
在单体架构中,我们只需要维护一个系统即可,而微服务需要维护每一个微服务模块。
●分布式的复杂性
要考虑分布式的一致性、可用性、容错性,以及分布式情况下数据存储的事务控制等等一些列复杂问题。
●接口调整成本高
例如用户服务会被电影微服务调用,如果用户的模型或者业务发生了变化,此时电影微服务也要发生改变。
●重复劳动
在单体架构下,我们往往会沉淀一些公共组件(例如StringUtils等),各个模块都可以直接使用。而在不同的微服务中可能就需要自己去构建它,造成一定的重复劳动。
如果使用的都是Java语言的前提下,可以使用Maven构建一个公共jar包,打包到私服中去,所有模块都去引用,这样是可以的。但是微服务是不绑定技术栈的,如果一个微服务用Java,一个用PHP,此时两个微服务还是要各自编写各自的公共工具类的。
根据参考资料和问题内容,我们可以分别回答第一个问题和第二个问题对应的选项序号。
第一个问题是有关Spring Cloud的优势。根据参考资料中的段落4,我们可以得知以下是Spring Cloud的优势: 1. A. 每个微服务有自己的数据库,服务之间数据库是独立的 2. B. 降低了开发以及部署维护的难度 3. C. 不同的服务可以根据需求用不同的语言实现 4. D. 降低了服务与服务之间的耦合,让系统具有很有的扩展性
所以第一个问题对应的选项序号为:A、B、C、D
第二个问题是有关常见负载均衡算法。根据参考资料中的段落0和段落4,我们可以得知以下是常见的负载均衡算法: 1. A. 轮询法 2. B. 随机法 3. C. 最大连接数法 4. D. 源地址哈希法
所以第二个问题对应的选项序号为:A、B、C、D