- 项目背景:
数据采集是当前很多智能设备都需要的。数据类型有很多种,有字符串,有json等等。交互协议有基于tcp的,有基于http的。现在针对原先项目面临的问题做出解决方案。
2.面临问题
1:并发量较低:原先项目采用裸写nio的方式,由于java本身的nio bug以及有些地方写的不太到位,单台机器并发量在200左右
2:业务逻辑耦合度相对较高,可读性差:由于很多地方采用字符串截取匹配来做路由的方式,存在很多的if else语句,导致可读性差
3:未考虑到tcp粘包问题
4:经常使用的数据未考虑缓存,频繁的mysql数据查询导致效率地下。
解决方案:
先看架构图
图片中比较简略的描述了数据流程,下面一步步介绍如何实现的。
所用技术介绍:
作为一个java工程师,spring 那一套是必须的
持久层mybatis,对于经常使用的数据用redis做缓存
控制层:springMvc
数据通信层:netty
服务治理:dubbo
负载均衡:nginx
项目骨架:maven
在接下来的文章中会对各个整合细节做出介绍
搭建步骤:
1:maven各个模块创建
2:spring 整合mybatis redis
3:spring 整合 netty
4:spring 整合dubbo
5:路由分发器编写
6:nginx做负载均衡
7:项目测试