Skip to main content

缘起#

疫情缓解后决定启动一个新项目,但实在厌倦了Spring Cloud这套繁杂的架构,而且受项目限制,系统分为公有云和私有云两部分,私有云需要部署到客户现场且日常维护工作不能过于复杂。另外,终端实时数据量非常大,数据非常重要且敏感,所以私有云系统不允许连接外网。考虑到一个基本的Spring Cloud平台启动需要涉及几十个组件:

  • 数据库:mysql / MongoDB
  • 搜索/索引:elasticsearch
  • Key-Value 数据库: redis
  • 消息队列:Apache Kafka / Alibaba rocketMQ
  • 服务注册:Spring Cloud Eureka / Spring Cloud Consul / Alibaba Nacos
  • 服务配置:Spring Cloud Config / Alibaba Nacos
  • 服务消息:Spring Cloud Stream, 可选
  • 安全认证:spring cloud security oauth2
  • 分库分表:Apache ShardingSphere, or other distributed database solutions
  • 分布式事务:Alibaba seata, or other distributed transaction components
  • 消息总线:Spring Cloud Bus
  • 业务系统:Spring boot based services / Alibaba Dubbo based services
  • 服务追踪:Spring Cloud Hystrix / Alibaba Sentinel
  • 服务网关:Spring Cloud Zuul / Spring Cloud Gateway / or other gateways
  • ...
  • 大数据:apache Hadoop 集群
  • ZooKeeper 节点
  • HDFS 节点
  • YARN 节点
  • HBase 节点
  • Hive 节点
  • Spark 节点
  • ....
  • 容器化:
  • Kubernetes/docker集群
  • 人工智能:
  • GPU服务器ubuntu集群

各模块之间耦合关系复杂,这样一套庞大的系统,如果非专业开发人员,日常维护工作几乎不可能完成。且由于实时数据非常庞大,apache Hadoop对于离线数据非常适合,但对于实时数据需要秒级响应的就无法满足要求了。经过再三考虑和选型,决定另外打造一个框架。由于时间非常有限,目前基于所选型的各类框架的设计,从中抽取部分模块,重新整合设计了一个新框架原型。设计的出发点主要考虑以下几个方面:

  • 1,尽力减少服务组件数量及依赖、耦合关系。
  • 2,易于部署,易于维护。
  • 3,易于开发,无需额外启动一系列服务来支持开发调试。
  • 4,专业领域支持,目前特指医疗领域。
    例1:医疗软件对软件版本有严格规定,所以项目版本号和模块版本号都按这一标准设计,对非医疗行业也是适用的。 例2:由于不能连接外网,各服务器时间和各类设备时间都不统一也不准确,所以框架对时间做了统一设计,不依赖系统时间,开发时严禁使用System.currentTimeMillis()和new Date()这些时间获取方式,这对非医疗行业也是适用的。
  • 5,海量数据实时计算,并行计算支持。
  • 6,人工智能支持,分布式模型训练支持。

本框架开发的目标方向是本地化的大数据实时并行计算微服务框架,目前该框架还处于原型测试阶段,许多模块的构思尚未最终定型,随时有可能会重新设计,重新实现,例如IOC/AOP、数据库ORM部分目前几个思路还在探索中,还会有较大改动。

应用场景#

本框架开发的目标方向是本地化的大数据实时并行计算微服务框架,当然也可以运行在公网或各大云厂商的公有云平台,但有不少特点是以本地环境为背景设计的。 例如时间服务、微服务的配置中心都是以本地环境为背景设计的。