课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
微服务架构开发是目前程序员都在使用的一个架构方式,下面我们就一起来了解一下,微服务架构线程模式都有哪些类型。
1、单线程单进程的线程模型
单线程单进程服务同一时间无法在多个核心上执行。在现代的裸机服务器上,核心数量一般能够达到24个。如果按照这种模型构建服务的话,它所能使用的服务器核心数量不会超过一个。如果有额外的负载的话,这些服务的吞吐量不会随之增加,它们的CPU利用率百分比不会超过个位数。鉴于如此高的未利用率,所以有一种补偿策略就是使用更大的服务器池来处理负载。
这种方式可以运行,但是它非常浪费,终的成本会非常高昂。为流行的云计算供应商都以非常便宜的价格提供单虚拟核心实例,这样做是为了以更细的粒度来支持这种模式,从而应对扩展性的需求。
2、单线程多个新进程的线程模型
在复杂性和效率方面更进一步的就是单线程多进程的线程模型,在这种方式下,会为每个请求创建一个新的进程。编写这种类型的微服务相对比较简单,但是跟前面的模型相比它包含了更多的复杂性。
创建进程的开销以及持续创建和销毁数据库连接会占用处理器的时间,因此会增加所有协作服务的延迟。这种线程模型之所以会创建更多的数据库连接是因为数据库连接是属于每个进程的,无法跨进程边界共享。进程的存活时间只会在请求的时间范围内,所以每个请求必须要重新连接数据库。
按照这种线程模型运行的微服务应该延迟对数据库的连接,直到需要的时候再创建连接。如果代码路径不需要的话,那就没有必要耗费成本创建数据库连接了。尽管数据库连接无法跨进程缓存,但是有些环境支持跨进程的opcode缓存,这样的话,我们可以将服务的配置数据存储起来,如连接到数据库的主机IP和凭证信息,两个流行的opcode缓存样例就是ZendOpCache和APC。
3、单线程多进程重用的线程模型
在代码复杂性和性能方面的下一步提升就是这种线程模型,这是一种单线程多线程的模型,新的请求都会重用已有的worker进程。这与前面的线程模型有所不同,在前面的模型中,会为每个请求都创建一个新的进程。而在这个线程模型中,在进程提供就绪之后,就不会创建新的进程了。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。