论文部分内容阅读
随着敏捷开发和应用复杂度的不断增加,对应用功能的横向扩展及解耦合等需求提出了更高的挑战。面向服务的软件开发架构由于其规范化、松耦合和去中心等诸多优势,可以很好的解决以上问题。本文在研究面向城镇的人口住宅管理系统的应用需求时发现,原系统是基于MVC软件架构且服务于单个城镇的应用,随着应用推广到多个城镇,各使用机构需求不断变化,对系统功能的敏捷迭代和智能维护给出了更高的要求。因此本文迫切需要将单体式集中应用转变为分布式服务应用,以便充分利用云平台的资源同时为多个机构提供应用服务和功能维护。本文深入剖析了分布式应用的设计思路,基于领域驱动设计原则构建了用于辅助分布式应用设计的服务分割模型;然后结合微服务架构利用Spring Cloud实现了城镇人口住宅管理的Saa S系统;最后为了系统具有服务实例的智能维护功能,本文采用容器技术和容器编排框架实现了服务的多实例化和动态扩缩容部署。具体工作内容主要有以下四点:1)研究了分布式应用的设计原则,根据微服务在系统中所担当的功能角色将其分为四类,包括管理监控微服务、辅助性微服务、业务逻辑微服务和复用性微服务;再结合领域驱动设计原则构建了服务分割模型。2)基于微服务架构和服务分割模型,对城镇人口住宅管理系统的功能进行服务架构设计。通过服务注册中心来进行服务请求的通讯从而解除服务之间的依赖,并采用Spring Cloud的子项目来开发相应的服务。3)通过数据库中间件的水平和垂直切分完成对多租户数据的安全隔离;使用Redis缓存数据库来进行数据请求的优化;搭建Harbor私人镜像仓库来存储镜像文件,同时让容器编排集群拉取其中的镜像生成服务实例。4)结合Docker容器技术和Kubernetes容器编排框架来实现服务实例崩溃时,系统快速恢复对应的服务实例;当服务的资源利用率增加或者减少时,系统对相应实例进行动态扩缩容以提高系统的负载能力。本文设计实现的多租户城镇人口住宅管理系统,采用微服务架构解耦合了功能应用,提高了该系统的可维护性和扩展性;结合容器技术让该系统在高低访问量下具有较好的稳定性。