当前位置:主页 > 新闻中心 > 媒体关注 >

媒体关注

分布式编程开发可以解决哪些问题

发布时间:2020-06-26  来源:未知  作者:木木

随着互联网的不断发展,越来越多的程序员都掌握了分布式编程开发方法,而今天我们就一起来了解一下,分布式编程开发可以解决哪些问题。

分布式编程开发可以解决哪些问题

1、分层模型(路由、代理)

使用多态服务器来协同完成计算任务,简单的思路就是,让每个服务器都能完成全部的请求,然后把请求随机的发给任何一个服务器处理。早期的互联网应用中,DNS轮询就是这样的做法:当用户输入一个域名试图访问某个网站,这个域名会被解释成多个IP地址中的一个,随后这个网站的访问请求,就被发往对应IP的服务器了,这样多个服务器(多个IP地址)就能一起解决处理大量的用户请求。

然而,单纯的请求随机转发,并不能解决一切问题。比如我们很多互联网业务,都是需要用户登录的。在登录某一个服务器后,用户会发起多个请求,如果我们把这些请求随机的转发到不同的服务器上,那么用户登录的状态就会丢失,造成一些请求处理失败。简单的依靠一层服务转发是不够的,所以我们会增加一批服务器,这些服务器会根据用户的Cookie,或者用户的登录凭据,来再次转发给后面具体处理业务的服务器。

2、并发模型(多线程、异步)

当我们在编写服务器端程序是,我们会明确的知道,大部分的程序,都是会处理同时到达的多个请求的。因此我们不能好像HelloWorld那么简单的,从一个简单的输入计算出输出来。因为我们会同时获得很多个输入,需要返回很多个输出。在这些处理的过程中,往往我们还会碰到需要“等待”或“阻塞”的情况,比如我们的程序要等待数据库处理结果,等待向另外一个进程请求结果等等……如果我们把请求一个挨着一个的处理,那么这些空闲的等待时间将白白浪费,造成用户的响应延时增加,以及整体系统的吞吐量极度下降。

所以在如何同时处理多个请求的问题上,业界有2个常见的方案。一种是多线程,一种是异步。在早期的系统中,多线程或多进程是常用的技术。这种技术的代码编写起来比较简单,因为每个线程中的代码都肯定是按先后顺序执行的。但是由于同时运行着多个线程,所以你无法保障多个线程之间的代码的先后顺序。这对于需要处理同一个数据的逻辑来说,是一个非常严重的问题,简单的例子就是显示某个新闻的阅读量。两个++操作同时运行,有可能结果只加了1,而不是2。所以多线程下,我们常常要加很多数据的锁,而这些锁又反过来可能导致线程的死锁。

3、缓冲技术

在互联网服务中,大部分的用户交互,都是需要立刻返回结果的,所以对于延迟有一定的要求。而类似网络游戏之类服务,延迟更是要求缩短到几十毫秒以内。所以为了降低延迟,缓冲是互联网服务中常见的技术之一。

【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请在707945861群中学习了解。




上一篇:运城达内培训学开发好还是学测试好

下一篇:造成用户流失的原因和召回方法都有哪些