当前位置:首页 > 物联网 > 《物联网技术》杂志
[导读]摘 要:鉴于Nginx服务器在负载均衡方面的优越性能,将其运用到智慧农业系统设计中,可以很好地解决系统在大并发访问下的性能瓶颈问题。智慧系统中应用服务器来处理指令信息的中转,有很复杂的业务逻辑关系,而利用Java多线程技术可以很好的处理这些业务逻辑。

引 言

基于底层传感器节点采集信息的智慧农业系统,可以大量获取作物的生长环境参数,在Web 平台上显示时,会有大量用户进行作物实时参数的查询请求,加入Nginx 负载均衡, 能够使 Web 服务器更好的应对高并发的用户访问场景。在系统中,通过 PC 网站发送控制指令,经由 Web 服务器传达到应用服务器,由应用服务器转发给嵌入式服务器。应用服务器由收指令线程和发指令线程组成,通过线程之间的同步和通信可以很好地保障指令发送的正确性,可靠性。

1 Nginx负载均衡

Nginx 是 Igor Sysoev 使用 C 语言为俄罗斯门户网站Rambler.ru 开发的一款Web 服务器。Nginx 以其高性能、稳定、功能丰富、配置简单灵活以及内存消耗低等特点而受到国内外企业的广泛青睐。

当Nginx 服务器启动后,它将产生一个主进程(Master Process),主进程在执行一些业务后,会产生一到多个工作进程(Worker Process)。主进程主要完成 Nginx 配置文件解析、模块配置和注册、数据结构初始化、网络监听生成、工作进程生成和管理以及信号处理 ;工作进程主要包括模块调用、进程初始化以及请求处理,是Nginx 服务器运行过程中提供服务的主要工作部分。Nginx 使用一个主进程来管理多个工作进程,通过内存共享等进程间通信机制实现 Nginx 的负载均衡等功能。Nginx 的结构关系如图 1 所示。

2 Java里的多线程同步机制

在多线程程式中,所有线程都是各自独立的执行体,但线程代码的模式却相同。如果这些线程协同工作,那么其线程代码无法重入控制,因此 Java 提供了相应的同步机制,从而阻止多个线程的一个或多个关键代码在任意时间执行该代码。

该机制建立在锁的概念和监视器基础上,其中监视器是关键代码周围的保护伞,锁则是监视器阻止线程进入监视器的软件。其基本理念是 :如果一个线程要进入监视器所监视的关键代码,该线程需要获取一个与之相关的锁 ;如果别的线程在使用该锁,那么Java 就会强制要求其在一个与锁以及监视器相关的区域等待 ;当锁被释放时,Java 移出等待状态中的线程,同意其获取锁,并对监视器的关键代码进行相应处理。在Java编程过程中经常使用Synchronized 方法和 Synchronized 代码块进行线程的同步。

于Nginx负载均衡及多线程智慧农业系统的设计

2.1 Synchronized方法

把 Synchronized 的 关 键 字 加 入 方 法 声 明 中以声 明synchronized()方法。在 synchronized()方法中,类成员变量访问由 synchronized()方法控制,每个类实例都会对应一个锁,如果 synchronized()方法要执行就要获取相应的锁,否则会阻塞所属线程。一旦该方法进入执行状态就会独占一个锁,且直至其返回才会释放。这种机制可以确保在同一时间对于每一个类实例,其声明为Synchronized 的成员函数最多只能有一个处于执行状态,从而避免类成员变量访问产生冲突。Java 中每个类都对应一把这样的锁,因此要控制其访问类的静态成员变量,可把类的静态成员函数声明为Synchronized。

2.2 Synchronized代码块

上述方法中, 如果代码量较多, 则声明的效率会大受影响, 因此我们可以用 Synchronized 块来解决该问题。Synchronized 块中要获取 SynObject 对应的锁才可以执行, 由于可以对任何代码块且上锁的对象任意指定,因此相对Synchronized 块方法有较高的灵活性。

3 多线程同步在系统中的应用

在智慧农业系统中,应用服务器主要负责 Web 服务器发送的指令接收和指令向嵌入式服务器的发送以及上行数据在数据库的存储。应用服务器的模块构成如图 2 所示。

于Nginx负载均衡及多线程智慧农业系统的设计

Web 服务器的指令请求发到应用服务器,应用服务器会 通过管理模块起一个进程,并运行主线程来开启指令接收的 线程,同时开启上行数据存储线程来接收嵌入式服务器上传 的监测数据,并存储到 MySQL 数据库中。指令接收线程接收 到指令数据后会启动指令发送线程来向嵌入式服务器发送指 令数据。指令接收线程和指令发送线程之间的协作通过线程 的同步机制 Synchronized 代码块实现。为防止两个不同线程 在访问共享资源时修改其内容,使用了 Java 阻塞机制,notify() 和 wait()方法。wait()使线程进入阻塞状态,notify()解 除阻塞状态的线程。两个方法的配合使用与线程同步共同作 用来保证指令接收线程和指令发送线程的正确协作。

4 农业监测系统实现

在加入 Nginx 负载均衡服务器以及应用服务器多线程后 的系统架构如图 3 所示。

在客户端和 Web 服务器之间加入了负载均衡服务器,让 Web 集群分担来自客户端的请求访问压力,提高系统的响应性 能,增强用户体验。在应用服务器加入多线程可以并发处理多 个指令请求,以提高系统的处理性能。

于Nginx负载均衡及多线程智慧农业系统的设计

5 结 语

随着互联网技术的进一步深度发展以及物联网技术的普 及,物联网与传统农业的融合进一步加深,智慧农业是未来 农业发展的必然趋势。当越来越多的农户使用智慧农业系统 时,对系统的性能就提出了更高的要求,该论文设计的系统可 以很好地满足该方面的需求。但随着用户的增加与数据的积 累,对数据进行处理也是必不可少的业务,而这正是该系统欠 缺的部分。但相信随着进一步的设计开发,这个问题一定会得 到完满解决。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭