`
- 浏览:
3446 次
-
高并发是指对单一应用的并发访问量非常大。基于此,现在的应用往往采取集群形式部署,并将web(jsp,action和服务接口)和服务(provider)分开架设在不同服务器上。并且provider不是均匀部署的,即每台服务器上的provider实际上是不一致的。
注意:后文所指的应用均是指provider,在我们传统的mvc架构中即是业务逻辑层,对应的web层则是jsp和action层
应用层的架设应是这样的结构。一个高并发的应用在后台会有多个集群服务器,用于部署应用。
在应用启动时,每个provider会去向注册中心(register)主动注册。每个provider去注册的register是可以不一样的,从而每个register上的数据并不是一致的。register里有个类似于map的数据结构去记录provider和地址(url)的键值匹配。该数据结构的key值往往是protocol:url@user@password?service的形式。
来自于client的访问,会带有register的地址,从而被路由到具体的register。由register通过命名查找路由到具体的应用服务器。需要注意的是在这一步,一个provider会对应多个应用服务器的地址,所以这时候第一步是查找到一个服务器地址List,然后通过负载均衡路由到具体的服务器。也就是负载均衡的过程。
一.对于分布式应用,ha(高可访问性)是需要考虑重要要素:
1.客户端会有守护线程对每个server做定时的心跳测试,如果服务器宕掉了就从注册中心下线。切上备用服务器。
2.client对应用的调用如果失败,也会将该服务器从注册中心下线。
二.对于调用失败的服务,会视规则做failover,failback或者其他操作。以failover举例,failover即在对应用server的调用失败后会重新做loadbalancer获取可用的server,反复数次。其他的规则不一一举例。
在实现细节上:
1.底层通过nio socket或者http等协议进行远程调用(即client对server的调用,即rpc)。远程调用的传输数据需包括provider即参数等业务数据,我们可称之为invocation或者request。可将这个过程类比于通常的jsp对servlet调用,jsp的表单数据以及消息头都被存放在request里传给servlet。假设我们的通信数据是invocation,则invocation必然是一个流化的数据。在传输的时候将其通过socket或者http甚至webservice(通信数据为xml报文)将其传输,之后服务端会将返回结果存在invocation的某个字段里返回,这样就完成了一个远程调用。
2.在通信上层,我们在应用初始化的时候将服务注册给注册中心。而在client的初始化过程中,我们最终返回给client的是一个interface的proxy。而在获得这个interface的proxy后并调用具体方法进行业务后,proxy会去承载实际的Loadbalancer,路由到远程服务器上实际要调用的服务,并取得返回值,即实现细节1中的功能。
当然这里讲得比较笼统,实际上具体的实现细节比这复杂很多。但总的架构体系差不都就是这样了。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
在广告联盟系统项目中,我接触并实践了RBAC权限控制、数据库分表和事务处理,以及ThinkPHP的缓存机制,这些都是在高并发、大数据量场景下保障系统稳定性和性能的关键技术。 在项目进度管理上,我认识到时间紧迫性对...
- **年终总结**:文件中的述职报告标志着医生对过去一年工作的回顾与总结。 - **自我评价**:医生通过对自身工作表现的评估,强调自己对医疗工作的投入与专业精神。 #### 二、业务能力提升 - **学习途径**: - ...
【护士述职报告】是医护人员对其工作情况进行总结和汇报的一种正式文档,主要反映了护士在岗位上的工作表现、专业技能、服务质量和遇到的挑战。以下是对这两篇护士述职报告中涉及的知识点的详细阐述: 1. **护理...
医生的个人述职报告是医生对其过去一段时间内工作表现的总结,通常包括工作内容、成绩、遇到的挑战、解决的方法、专业技能提升、医疗服务质量改进等多个方面。以下是对报告中提到的几个关键知识点的详细解释: 1. *...
- **应用场景**:适用于大规模在线交易处理(OLTP)、混合事务分析处理(HTAP)等场景,满足了互联网金融、电商等行业的高并发和大数据量的需求。 2. **阿里在数据库智能优化路上,做了哪些探索与实践?** - **探索...
通过不断优化,实现了高并发处理能力,确保了用户在高峰期也能流畅购物。 二、大数据处理与分析 随着业务的发展,淘宝积累了海量的用户行为数据。利用大数据技术,淘宝实现了精准推荐、个性化搜索等功能,极大地...
如何优化代码以提高运行效率,如内存管理、并发处理等,也是常见问题。 6. **团队合作与沟通技巧**:在技术之外,面试也会考察候选人的团队协作能力和沟通技巧。能否清晰、准确地表达自己的想法,以及在团队中协调...
6. **处理多线程和大文件**:对于大文件或并发操作,可能需要使用`PDFParser`的流式处理,避免一次性加载整个文档到内存。同时,确保在完成操作后正确关闭`PDDocument`,以释放资源。 7. **高级功能**:除了基本的...
这两篇述职报告主要反映了两位优秀医生在过去一年的工作总结。他们都强调了持续学习、职业道德、严谨工作态度和专业技术提升的重要性。以下是主要的知识点: 1. **政治素养与职业道德**:医生强调了不断提高自身的...
分布式SQL的提及表明了数据库管理系统的重要地位,它允许在多个节点上分布数据,提高系统的可用性和性能,适用于大规模并发访问和大数据处理的场景。 总结来说,不同的编程语言有其独特的特性和应用场景。选择合适...
6. **并发处理**:为了提高效率,可以并行处理多个URL,但需注意防止对目标网站造成过大压力。 **实践示例** 在`web-scraper-main`项目中,可能包含了使用上述库的一个简单网络抓取应用的源代码。这个项目可能包括...