微服务网关和注册中心区别基于微服务的 IT科技博客系统的架构设计
摘要:单体应用架构已经不能适应现今互联网环境,容易造成应用系统后期可扩展性差、可维护性低和分布式资源浪费等问题,增加了项目的生产成本和系统维护代价。在这基础上,能够带来更好的可扩展性和更加灵活的微服务架构便逐渐成为了软件领域的大热门。本文主要阐述开发一种基于微服务架构的IT科技博客系统,为用户提供观看文章,发布文章以及互相评论交流的各种必要功能。同时为了保证平台资源的和谐健康,搭建了一套文章审核的后台管理系统用来审核用户发布的资源以及用户的相关信息。
关键词:微服务;博客;框架
1.微服务概述
微服务(Microservices)就是一些协同工作小而自治的服务[1]。它会将一个系统分为多个可独立部署运行的微服务,而它们通过HTTP进行通信写作。被拆分的每一个微服务都是根据系统中一项业务功能进行构建的,并且每个微服务都有着自己的独立部署机制和数据存储[2]。
2.微服务和单体架构的区别
经调研发现,当前不少企业在设计系统架构方案和环境配置的过程中,会从Spring + SpringMVC+ Hibernate(SSH)或者Spring + SpringMVC + MyBatis(SSM)两种主流架构中选择一个,开发完成后会将整个系统的所有业务功能代码封装进入一个包中,最后在网络服务器中去运行。这两种Spring搭建技术模式总体来说比较繁琐与复杂,项目构架难度很高。这种架构方式是将全部代码都编辑于单一系统内,所有代码均被压缩与一个压缩包里,代码将非常难以修改。单体架构相对于微服务架构来说部署较为简单,整体开发成本低,适合小型系统的开发或者项目前期的开发。在开发单体架构项目的过程中实现新的业务或者开发新的接口功能的适合,只能够在项目代码上进行修改扩展操作,同时系统的稳定性和扩展性也会持续地下降,随着系统的业务不断复杂、用户量的渐渐增多,程序的维护变得困难,系统扩展性变得越来越差。随着开发人员的变动,开发人员阅读程序代码难度不断提升,面对冗余的代码难以修改。故此这种架构模式中即使改动幅度十分微小,改动代码后整个项目也需要重新启动运行和测试,这对于整个系统的开发和项目的运行效率影响也是十分严重的。因此,再这样的环境下,使用微服务技术开发系统是势在必行的。
尽管采用单体架构开发项目方便开发人员快速开发和整体快速测试,同时部署环境也十分迅捷,但是单体部署环境也十分迅捷,但是它是有着非常明显的缺点:
(1)程序开发运行非常不灵便,某个小系统工程的修改处会影响到整个代码的构造,需要处处修改才能保证项目可以正常运行,同时这也非常不利于团队的整体协作,一个人的问题会导致团队工作的重新安排,开发效率非常低。
(2)系统的运行效率底下,或许本身程序只需要修改某个层的一个逻辑,确是需要相关业务逻辑的编写人员修改各个层面的代码体系,间接导致本来的工作量变得非常庞大。
(3)整个服务体系开启运行耗时较长,业务的全部功能都只在一个模块中,启动系统后所有功能将几乎同时开启,这样会使整个系统启动速度较为缓慢。
(4)平台扩展拓展功能繁杂,当面临新的业务需求时,开发人员不能够只针对一个逻辑修改,必须要考虑整体业务的变化才能增加新东西。
基于单体架构的缺点,本论文对项目需求进行了全面的调研,通过学习和实践新技术,确定了单体式架构平台不能满足灵活度高、系统运行效率高、扩展性高等特点,因此采用Spring系列的SpringCloud 和 SpringBoot微服务技术,这能有效提高系统灵活度和运行效率,方便开发人员的开发系统。平台的服务端可以根据功能需求增加特定微服务模块的功能,因此服
务端可依此具备高可用性。本论文在开源的SpringCloud + SpringBoot微服务架构的技术帮助下,设计与实现基于微服务架构的IT科技博客系统。
3.架构设计
IT科技博客系统的后端服务分为四层:页面展示层、网关接口层、服务层和资源层,整体架构如图1所示。
图1 系统架构图
各层的技术选型以及其分工说明如下:
网关接口层,服务网关是页面显示层请求后端服务的第一站,本系统的网关服务采用SpringCloud的Gateway组件,通过一系列过滤器和配置实现请求的校验和转发。
服务层基础部分主要负责一些基础服务和辅助服务的维护和搭建,基础部分使用了现在通用的Spring系列微服务架构SpringCloud。其中服务注册中心使用的是Nacos组件。
服务层业务部分,使用SpringBoot框架,针对实际业务进行开发。通过资源层相关的框架与资源层进行交互。
服务层公共模块部分,主要包括一些基础的工具类、配置信息、暴露接口定义等,是每个微服务都要依赖的基础。
资源层,主要使用MySQL数据库进行数据持久化存储,使用MongoDB记录文章的评论信息,使用FastDFS存储图片信息,使用Seata实现分布式事务,使用XXL-JOB实现定时任务,
使用Kafka实现消息传递,使用Feign开启远程调用,最后使用阿里云的文本反垃圾检测和图片审核来实现文章的自动审核。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论