文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

构建全域感知能力,打造高并发物联网平台

2024-12-13 15:32

关注

Part 01

高并发框架 

高并发是一种在“同一时间点或极短时间内出现大量的操作请求”的场景。而传统的网络通信模型,在面对海量数据高并发场景,已经显得力不从心;一款优秀的高并发框架是现阶段网络通信必不可少的一环,如:Grizzly、Netty,Mina。平台在面对海量设备接入场景,选择了Netty成为整个接入能力的核心框架。其单节点百万级接入,集群千万级的海量接入能力成为了当前平台在高并发场景下的解决方案。

Netty是什么?

是一个异步事件驱动的Java开源网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。

为什么要选用Netty?

相较于传统的IO模型,Netty的IO线程NioEventLoop 聚合了多路复用器Selector,可以同时并发处理成千上万个客户端连接,在线程从客户端读写数据闲暇时,线程可以进行其他任务,而无需等待读写数据。在线程模型上,Netty的线程模型也叫Reactor模型,核心是基于事件驱动的方式来处理事件;其分布式的异步架构,使得事件处理器之间高度解耦,可以方便扩展事件处理逻辑;同时通过队列暂存事件,线程消费事件,能方便并行异步处理事件。

Netty的优势是什么?

Netty适用于各种传输类型的统一API阻塞和非阻塞Socket;基于灵活且可扩展的事件模型,可以清晰地让开发者专注于业务而无需关注底层架构,提升了开发效率;具备高度可定制的线程模型-单线程,一个或多个线程池;真正的无连接数据报套接字的支持。Zero-Copy技术使得Netty有更低的资源消耗,以及不必要的内存拷贝。

Part 02

微服务架构 

“一根筷子易折断,一把筷子难折断”。对于平台也是一样,巨大的单体式服务总会到达一个性能瓶颈。平台面对千万级,乃至亿级的接入,单体服务只能进行横向扩展,部署更多的单体式服务;而单体式服务包含了全量的服务功能,任何一个功能出现问题,会面临所有的功能都不可用;同样单体式服务代码复杂度也非常高,在服务中包含了大量的业务逻辑。随着时间推移,需求不断增多,代码也越来越复杂,维护成本也越来越高,甚至对于修复bug和新增功能都要非常谨慎,可谓牵一发而动全身。

平台选择微服务的整体架构设计,采用分布式部署的方式完美的解决了单体服务所面对的窘境。

功能原子化,高可维护性

将复杂的单体式服务以功能点拆分为专注单一功能的微服务,并通过定义良好的接口清晰地表述服务边界,由于体积小、复杂度低,易于保持高可维护性,并提高了研发效率。

服务独立性,部署风险低

微服务具备独立的运行进程,可以单独进行部署。当某个微服务发生变更时无需部署整个应用的服务,只需要对变更的微服务进行重新部署。使得发布更加高效,降低了对正式环境所造成的部署风险,最终缩短应用受影响的时间。

高扩展,高容错

微服务便于横向扩展,不同微服务在扩展需求存在差异时,可以根据微服务的实际需求进行独立扩展,而不需要对整个应用进行扩展,节省了资源,提高了资源利用效率。

微服务也增加了应用的高容错性,在单个微服务发生故障的情况下,不会影响到其他微服务,导致整个应用不可用。具备多个节点的微服务,上层的微服务会通过重试可用微服务或者平稳的故障转移机制实现应用层面的高容错性。

Part 03

负载均衡 

面对大量的用户访问,高并发请求,海量的数据,即使是使用高性能框架和微服务架构的设计也还不能完全解决应用服务的压力。通常客户端在请求服务端时会有一个统一的访问入口,那这个统一的访问入口是如何将我们的请求分发到压力较小的服务器上去的呢?答案就是“负载均衡”。

负载均衡,顾名思义就是将客户端请求进行平衡,分摊到多个服务器单元,优化资源的使用,最大化吞吐量,最小化响应时间并避免任何的单一资源过载的技术。

负载均衡的分类主要包含如下几种:

采用虚拟mac的形式,外部对虚拟mac地址请求,负载均衡接收后分配实际的mac地址服务进行响应处理。

采用虚拟IP的方式,外部对虚拟IP的请求,负载均衡后分配到实际的IP地址进行响应

四层负载均衡是基于三层负载均衡通过发布三层负载均衡的IP地址,加入四层的端口号,来决定哪些流量需要做负载均衡;LVS在四层负载均衡性能上高于Nginx的。

七层负载均衡是在更高的应用层上执行负载均衡,会对每个消息实际内容进行处理,主要通过解析消息内容,得到消息内容的有效标识,最终决定选择的内部服务;例如选用URL来做出负载均衡决策;Nginx在功能性和便利性上是要好于LVS的。

平台负载均衡采用LVS+Keepalived+Nginx对业务流进行分发,实现整体负载均衡;支持TCP、UDP等协议的四层负载均衡;支持HTTP/HTTPs等协议的七层负载均衡;新增或删除后端服务后可重新负载业务流。

Part 04

分布式中间件  

高并发框架、微服务架构设计、负载均衡的使用解决了大部分的服务端的并发压力。但海量数据在磁盘中的读写,I/O的瓶颈也是非常明显的。数据的存储依旧也会造成应用服务的瓶颈。分布式中间件的使用就尤为重要了。

分布式缓存

缓存是一种用于提高系统响应速度、改善系统运行性能的技术。缓存通常是基于内存的,数据库中数据的读写通常是基于磁盘,从缓存读取数据比从磁盘读取数据快两个数量级。

分布式消息队列

消息队列是一种用于解决应用耦合、异步消息、流量削锋等场景的中间件技术。它可以实现高性能、高可用、可伸缩和最终一致性架构,是大型分布式系统不可缺少的中间件。

平台微服务架构设计方面同样会使用缓存-分布式Redis缓存,分布式Redis缓存具有高性能、动态扩展、高可用、易用性等特点,采用集群方式来满足高读写性能场景及容量需弹性变配的业务需求。也使用了分布式Kafka,其对于消息异步的处理,微服务之间的应用解耦也是不可或缺的部分。

来源:移动Labs内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯