`
szwandcj
  • 浏览: 3443 次
文章分类
社区版块
存档分类
最新评论

对过去项目的总结--高并发处理篇

阅读更多
      高并发是指对单一应用的并发访问量非常大。基于此,现在的应用往往采取集群形式部署,并将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中的功能。

       当然这里讲得比较笼统,实际上具体的实现细节比这复杂很多。但总的架构体系差不都就是这样了。

     
分享到:
评论

相关推荐

    2021软件开发个人工作总结范文(精选10篇)-doc精品模板.docx

    在广告联盟系统项目中,我接触并实践了RBAC权限控制、数据库分表和事务处理,以及ThinkPHP的缓存机制,这些都是在高并发、大数据量场景下保障系统稳定性和性能的关键技术。 在项目进度管理上,我认识到时间紧迫性对...

    医生的个人述职报告锦集六篇_2.docx

    - **年终总结**:文件中的述职报告标志着医生对过去一年工作的回顾与总结。 - **自我评价**:医生通过对自身工作表现的评估,强调自己对医疗工作的投入与专业精神。 #### 二、业务能力提升 - **学习途径**: - ...

    护士述职报告模板10篇_3.docx

    【护士述职报告】是医护人员对其工作情况进行总结和汇报的一种正式文档,主要反映了护士在岗位上的工作表现、专业技能、服务质量和遇到的挑战。以下是对这两篇护士述职报告中涉及的知识点的详细阐述: 1. **护理...

    关于医生的个人述职报告模板合集8篇.docx

    医生的个人述职报告是医生对其过去一段时间内工作表现的总结,通常包括工作内容、成绩、遇到的挑战、解决的方法、专业技能提升、医疗服务质量改进等多个方面。以下是对报告中提到的几个关键知识点的详细解释: 1. *...

    2017阿里技术年度精选(上)

    - **应用场景**:适用于大规模在线交易处理(OLTP)、混合事务分析处理(HTAP)等场景,满足了互联网金融、电商等行业的高并发和大数据量的需求。 2. **阿里在数据库智能优化路上,做了哪些探索与实践?** - **探索...

    一份阿里技术写的发展文章-淘宝技术这十年,完整最终确认版

    通过不断优化,实现了高并发处理能力,确保了用户在高峰期也能流畅购物。 二、大数据处理与分析 随着业务的发展,淘宝积累了海量的用户行为数据。利用大数据技术,淘宝实现了精准推荐、个性化搜索等功能,极大地...

    一个程序员的面试感想

    如何优化代码以提高运行效率,如内存管理、并发处理等,也是常见问题。 6. **团队合作与沟通技巧**:在技术之外,面试也会考察候选人的团队协作能力和沟通技巧。能否清晰、准确地表达自己的想法,以及在团队中协调...

    java 操作pdf程序

    6. **处理多线程和大文件**:对于大文件或并发操作,可能需要使用`PDFParser`的流式处理,避免一次性加载整个文档到内存。同时,确保在完成操作后正确关闭`PDDocument`,以释放资源。 7. **高级功能**:除了基本的...

    优秀医生个人2022年终述职报告.docx

    这两篇述职报告主要反映了两位优秀医生在过去一年的工作总结。他们都强调了持续学习、职业道德、严谨工作态度和专业技术提升的重要性。以下是主要的知识点: 1. **政治素养与职业道德**:医生强调了不断提高自身的...

    计算机语言调查报告.docx

    分布式SQL的提及表明了数据库管理系统的重要地位,它允许在多个节点上分布数据,提高系统的可用性和性能,适用于大规模并发访问和大数据处理的场景。 总结来说,不同的编程语言有其独特的特性和应用场景。选择合适...

    网络抓取工具:使用节点

    6. **并发处理**:为了提高效率,可以并行处理多个URL,但需注意防止对目标网站造成过大压力。 **实践示例** 在`web-scraper-main`项目中,可能包含了使用上述库的一个简单网络抓取应用的源代码。这个项目可能包括...

Global site tag (gtag.js) - Google Analytics