技术架构和业务实现

时间:2020-12-31 02:11:09

背景

通过近段时间对公司部分项目的了解,对公司软件系统架构平台和业务实现提出一些个人的意见和建议。

技术平台

公司现在项目较多,使用的基础架构也各不相同,前端使用Jquery、Extjs、Bootstrap、Vue等,后台使用hibernate、mybatis等。因为技术栈较复杂,开发人员需要对各个技术栈都需要了解。因此需要实现项目平台的统一,降低业务开发复杂度,实现平台的基础目标:

  1. 所有项目采用相同的平台架构(包括前端和后台)。
  2. 保证平台的可升级、延续性,可实现平台层的无缝升级。
  3. 持续维护平台架构,提升其稳定性、可用性。
  4. 实现前后台分离,提高接口的服用度。
  5. 实现前后台的热升级功能。

为了实现平台的无缝升级和扩展,平台架构的主要设计及开发准则

  1. 业务系统开发中的注解等,采用经过封装的一维大成注解。
  2. 系统基础功能(如配置、日志、监控、接口调用、数据库等),采用统一的设计封装。
  3. 前后台实现完全分离,后台逐步采用微服务方式,前台可以采用VUE等模块化解决方案。

注解

现有框架采用注解的方式实现AOP等功能,可以将常用的注解进行封装,减少系统中注解数量,并可以不断对注解功能进行丰富和扩展。实现平台的扩展和升级。

配置

结合本地配置、数据库配置等方式,统一封装配置功能,实现配置的灵活性。

  1. 实现配置的可视化,可以通过系统进行配置管理。
  2. 配置方式多样性,可实现配置的本地文件存储、数据库存储等方式。

日志

项目采用统一的日志记录方式,通过封装可以实现日志记录默认项的增加。提高日志记录的准确性。

  1. 自动增加日志记录时的方法、时间等信息。
  2. 日志中增加上下文链路记录,实现同一上下文中的日志的汇总。
  3. 实现日志线程记录,降低日志记录对系统响应性的影响。

日志一个很重要的需求就是上下文打通,也就是可以从一次调用入手获取到所有日志信息,从而了解功能运行情况、运行时间、问题等。

监控

实现对操作系统的监控、系统运行效率的监控。

  1. 通过操作系统工具实现对操作系统的监控,通过监控了解系统运行情况(CPU、内存、网络等),从而辅助软件优化。
  2. 通过软件埋点,实现对系统功能运行效率进行直观展示和统计。

接口调用

现有WebApi接口定义、开发等都是从Controller搭建,并且无统一管理入口。

  1. 统一WebApi入口,对WebApi入参数据、出参数据、执行时间、异常记录等进行统一约定和日志记录。
  2. 规范入参格式和出参格式的统一规范,如入参采用传输方式(application/x-www-form-urlencoded等)、出参基本Json结构(status + data + msg + errmsg等)
  3. 通过接口规范,通过接口统一管理,降低接口开发复杂度,让开发人员更多的关注业务开发。
  4. 封装接口间Http调用方法,统一Http调用。提高访问的稳定性和规范性,提高接口访问扩展性。例如在调用参数的基础上,可以传递上下文链路标示等系统数据。

前后台分离

前后台分离有利于技术栈的深入学习和分工,有利于分工测试,提高系统稳定性。前后台分离的目标主要是模块化。实现前台和后台功能可以进行组合、拆分,实现系统的扩展和服用。

  1. 后台采用微服务的理念进行设计,实现服务的复用和组合。
  2. 前台可以采用VUE的模块架构,实现前台的复用和组合。

实现计划

平台不是短时间可以完成,需要不断的深入和细化。初步平台实现计划

  1. 总体需求及方案。论证平台需求及方案,规划平台最终实现目标。
  2. 关键技术选型。对于关键技术,如日志、数据库、中间件等的选型,关键技术指标论证。
  3. 平台关键接口实现。实现系统组件设计、实现。
  4. 平台管理功能。实现平台的管理功能,实现界面管理、查看等功能。

总结

通过平台的设计实现,实现将业务功能和平台进行分离,实现业务开发只专注于业务的实现。通过模块化、插件化的业务组件方式,实现可以将公司主要系统运行在同一平台下,实现业务组件的拆分、组合与服用,实现平台的无缝升级。

基于平台的开发,平台也将实现配置、日志等基础功能,用户、权限等通用功能,并逐步丰富平台的服务管理功能。

对于微服务的服务发现、监控、编排、发布等随着平台的开发也将逐步开展。服务管理需要不断深入,逐步完善。