橙蜂智能公司致力于提供先进的人工智能和物联网解决方案,帮助企业优化运营并实现技术潜能。公司主要服务包括AI数字人、AI翻译、AI知识库、大模型服务等。其核心价值观为创新、客户至上、质量、合作和可持续发展。
橙蜂智农的智慧农业产品涵盖了多方面的功能,如智能化推荐、数据分析、远程监控和决策支持系统。用户可以通过应用获得个性化的作物种植建议、实时的生长状态监控以及精确的灌溉和施肥指导,提升农业生产效率。
JetLinks物联网平台是国内开源(JetLinks提供开源的社区版和付费的企业版两个版本,下面的描述都是针对JetLinks社区版进行)的一款企业级的物联网平台,在国内开源的物联网平台中,star数和活跃度均名列前茅。JetLinks物联网平台的功能齐全,设备接入方面支持多种网络协议和私有协议;采用全异步的设计,从模块级到方法级都采用了异步通讯,web层和db层也都是异步化的;支持多种时序数据库,如ElasticSearch、ClickHouse、InfluxDB、TDengine、Cassandra。
JetLinks物联网平台功能齐全,足够应对小设备量或者业务简单的场景,但是如果设备量比较大,或者业务复杂,需要做一些定制化开发时,其单体架构将会是一大限制因素。
-
因为JetLinks是单体架构,而其功能又比较多,必然造成代码量大而且复杂,开发者在不了解整体代码的前提下开发容易引入bug,系统可用性降低。
-
同样由于项目庞大,启动缓慢,使得开发、测试的流程很长,开发效率低,且由于测试不充分导致引入bug。
-
单体项目只能横向扩容,会浪费一定服务器资源。
-
JetLinks整体采用基于Project Reactor的响应式编程,虽然方便构建异步非阻塞的应用,但是它也有着生态不完善(支持响应式的数据库和orm框架不多,无法进行复杂的多表查询),学习成本高,调试复杂等缺点。因此,重业务的模块如设备管理、数据查询等,并不适合采用响应式框架,但是由于是单体架构,我们不得已所有模块都采用这同一种技术。
本系列的目的就是带着大家一步步地将JetLinks物联网平台重构为微服务架构,重构后的系统能够解决以上问题:
-
微服务拆分后,各服务的代码量较小,功能单一,代码更容易理解和维护,测试可以更充分,引入bug的概率小,可用性提高。
-
各微服务可以独立扩容,相对更加节省服务器资源。
-
各微服务可以采用不同的技术栈,如设备管理模块可以不同响应式,这样就可以使用MyBatis框架,进行复杂sql的查询。
通过本系列文档,希望和大家一起掌握如下技能:
-
遗留系统重构的方法论和实操;
-
微服务设计的方法论,包括领域驱动设计的应用;
-
微服务的测试;
-
微服务的集群部署。