论微服务架构及其应用

题目
 

        近年来,随着互联网行业的迅猛发展,公司或组织业务的不断扩张,需求的快速变化以及用户量的不断增加,传统的单块(Monolithic)软件架构面临着越来越多的挑战,已逐渐无法适应互联网时代对软件的要求。在这一背景下,微服务架构模式(Microservice Architecture Pattern)逐渐流行,它强调将单一业务功能开发成微服务的形式,每个微服务运行在一个进程中;采用HTTP等通用协议和轻量级API实现微服务之间的协作与通信。这些微服务可以使用不同的开发语言以及不同数据存储技术,能够通过自动化部署工具独立发布,并保持最低限制的集中式管理。 请围绕“论微服务架构及其应用”论题,依次从以下三个方面进行论述。
1.概要叙述你参与管理和开发的、采用微服务架构的软件开发项目及在其中所担任的主要工作。
2.与单块架构相比较,微服务架构有哪些特点?请列举至少4个特点并进行说明。
3.结合你参与管理和开发的软件开发项目,描述该软件的架构,说明该架构是如何采用微服务架构模式的,并说明在采用微服务架构后,在软件开发过程中遇到的实际问题和解决方案。

摘要
(时间、人物、内容)2022年1月起,我投身于公司智慧公交平台项目,主要参与了新平台整体框架的选型决策和核心调度模块的设计与研发工作。(项目架构)该项目整体采用微服务架构,业务层基于公交领域模型的深入分析,运用领域驱动设计(DDD)方法构建业务逻辑框架。在非功能性属性实现及二方库、三方库组件集成方面,如单点登录、地图服务和项目依赖库,我们主要依托公司中台层进行组件的定制或复用。物联网交互层则通过公司S17平台实现与各种设备交互信令的封装、解析与传输。(阐述内容)本文主要阐述了智慧公交平台采用微服务架构的特色、优势以及微服务架构下模块化设计的实践。(项目成功)智慧公交平台项目经过一年的打造,项目团队的不懈努力,于2022年12月份在首个城市成功上线。至今,智慧公交平台系统已拓展20多个城市,经过两年多的稳定运行和持续优化,不仅达到了预设目标,还展现了出色的性能和稳定性。

正文

(项目背景)在“互联网+”的时代背景下,城市公共交通作为一个传统行业,由于其业务复杂性,技术进步长期受限,行业整体技术水平相对较低。为应对公交行业在技术层面遇到的挑战,同时满足公众对高品质交通服务的期望,我们全新打造的公交智慧平台项目应运而生。智慧公交平台融合了物联网、大数据分析和云计算等先进信息技术,致力于对传统公交系统进行智能化升级。在政策引导和技术创新的合力作用下,公交智慧平台旨在通过实时调度、智能排班、小程序平台拓展等功能,推动公共交通系统向现代化、高效化和人性化方向发展,从而助力城市的可持续发展。

(项目模块架构)智慧公交平台采用微服务模块化架构,系统由五大核心模块构成,核心包括基础数据模块、调度模块、计划排班模块、设备交互Tap模块、报表模块。同时为适应公交智能化需求,我们还开发了主动安全模块、对外开放平台模块、客流模块等以全面覆盖公交业务的多场景业务处理。各模块采用渐进式迭代开发模式,并融入主流的敏捷开发理念。我们以小组为单位,以用户需求为核心,基于公司中台战略,实施RAD 快速开发方法开发每个微服务组件,确保了系统设计开发阶段的灵活性和高效性。

(微服务特性)(独立性)基于微服务架构的独立性特性,我们采用了组建小型团队的迭代敏捷开发方式。每个团队有一定的技术自主权,基于团队成员的技术视野和偏好。这种灵活性允许团队采用不同的编程语言和开发方法来构建各自负责的模块。通过同步协作和分别开发的方式,我们显著提高了整体项目的开发进度。

(故障隔离)微服务架构采用模块化设计,使得每个服务独立部署,这种设计在一定程度上实现了故障隔离。当一个服务出现问题时,它不会影响其他服务的正常运行,从而增强了系统的整体可靠性。此外,微服务架构还可以集成容错服务组件,如Spring Cloud中的Hystrix,通过服务降级或熔断等机制,进一步加强了故障隔离的特性,确保系统在面对异常情况时仍能保持稳定。

(技术栈多样)微服务的独立性意味着各个服务可以根据其功能需求灵活选择最合适的技术栈。由于不同的技术有其特定的适用场景,例如Java通常用于构建大型互联网软件框架,而Python则更适合于机器学习和人工智能(AI/CG)等场景,我们可以根据每个服务的具体功能和需求,选择最合适的技术来实现。这样的选择有助于提高服务效率,并确保整体服务的开发和整合工作能够高效且精准地完成。

(自动化、集中管理)尽管微服务架构确保了每个服务都是独立的,但为了简化管理和提高效率,我们仍需要实施自动化和集中化的管理策略。通过采用自动化部署等技术,我们可以显著降低微服务架构的复杂性。采用容器化技术如Docker,它是一种强大的工具,可以实现微服务的统一管理。此外,我们也可以编写程序部署脚本,以简化微服务程序的部署过程。

        目前,市场上有很多先进的微服务管理工具包括DevOps管理平台、CI/CD自动化部署工具,如Kubernetes、Jenkins等,它们可以协同工作,帮助我们实现微服务架构的自动化集中管理。为了确保整个流程的顺畅和可重复性,我们还需要整理详细的文档,记录所有相关步骤和配置。通过这样的综合管理方案,我们能够更加高效地管理微服务架构,确保其稳定运行和持续发展。

(如何采用微服务架构模式的?)智慧公交平台采用Java的Spring Cloud Alibaba微服务架构,以Dubbo作为微服务间的通信协议组件,实现了高效的服务调用。我们使用Nacos作为服务注册中心和配置中心,通过其订阅与发布机制,实现了服务的动态上下线和参数的动态配置,大幅提升了项目的灵活性和可维护性。

        在微服务的外部接口访问方面,我们成功对接了公司中台提供的GetWay网关,确保所有微服务通过统一端口进行访问,保障了服务的一致性和安全性。网关的流量控制、请求监控等功能,进一步增强了系统的稳定性和安全性,降低了网络风险。

        在项目部署方面,我们初期编写了部署脚本,实现了服务的快速升级。随后,我们整合了公司的CI/CD自动化部署平台,将部署流程标准化,提高了部署效率。虽然目前部署平台仍在适配阶段,但我们已采用混合部署策略以满足当前需求。我们的项目部署方案包括两种服务模式:一是基于公交平台IT基础设施的本地化部署;二是基于我们提供的私有云服务,实现SaaS化服务。在实际运行过程中,虽然遇到了一些挑战,但我们不断优化和改进,确保了平台的稳定运行。

(实际问题1)在XX城市上线后,我们遇到了一个特殊挑战:该城市客户端使用的Windows系统版本较旧,且浏览器版本无法升级。这导致调度人员在使用我们的系统时,反馈操作响应缓慢。经过详细排查,我们发现问题的根源在于我们采用的微服务加React的前后端分离架构。特别是调度模拟图页面,由于其刷新频率较高,需要频繁接收后端WebSocket消息,这导致了用户接口请求常常处于等待状态。为解决这一问题,我们采取了以下优化措施:

  1. 减少接口调用频率:我们对页面调用后端接口的次数进行了优化,避免不必要的请求,减少服务器压力。
  2. 调整WebSocket请求速率:通过降低WebSocket消息的接收频率,我们减少了客户端的处理负担。
  3. 前端渲染逻辑优化:前端开发团队对页面渲染逻辑进行了重构,提高了渲染效率。
  4. 请求优先级管理:引入了fetch请求,并根据请求类型设置了优先级,确保用户操作请求(如点击、输入等)作为最高优先级处理,而WebSocket请求则作为较低优先级处理。

经过这些优化调整,我们的系统现在能够兼容Windows老版本系统和浏览器,操作流畅性得到了显著提升,从而为用户提供了满意的体验。

(实际问题2)在XX城市上线后,我们接到了调度人员关于系统操作缓慢的反馈。经过排查,我们发现该城市接口调用时间远远超过了正常水平的十倍以上。为了解决这个问题,我们启动了对后端服务的深入排查。

        首先我们通过跟踪特定接口的traceId进行链路追踪,我们分析了该接口的整个请求流程。调查结果显示,虽然每个微服务模块的接口调用和响应时间都在正常范围内,但问题出现在微服务请求接口前的Web Filter过滤器阶段。特别是鉴权过滤器,它需要向中台服务发起请求以获取用户鉴权和权限信息,这一过程占据了大量时间,是导致接口响应缓慢的根本原因。

        进一步分析发现,中台服务与应用微服务分别部署在不同的服务器上,而我们测试了两台服务器之间的ping值,发现了显著的延迟。因此,我们通知了XX城市的网络管理人员协助进行网络排查。同时我们发现中台服务器中的某个服务占用cpu 异常,查看日志发现该服务处于崩溃,频繁报错。在解决了中台服务的报错问题并重启服务器以释放资源后,接口请求时间过长的问题得到了解决,两台服务器之间的ping值也恢复了正常。

(总结)微服务架构作为当前互联网开发领域的主流选择之一,凭借其模块化、故障隔离、技术灵活性和集中化管理等优势,赢得了开发者的广泛青睐。微服务架构通过细粒度的服务单元,实现了功能的快速迭代和灵活扩展,同时有效降低了项目的技术风险,这也是项目管理者倾向于采用微服务架构的重要原因。然而,在享受微服务带来的便利的同时,我们必须采用恰当的策略来应对微服务架构可能存在的弱点,确保项目微服务架构的稳定性和可靠性。

1、概要叙述我所参与管理或开发的软件项目以及我的主要工作: 我参与管理或开发的软件项目是一个电子商务平台,该平台提供在线购物、支付、订单管理等功能。作为项目经理,我的主要工作是协调团队成员,制定项目计划和进度,以确保项目按时交付。我还负责与客户沟通,了解他们的需求,并将其转化为具体的软件功能和设计要求。此外,我还负责监督开发过程,确保代码质量和系统性能满足预期标准。 2、简要描述微服务的优点: 微服务架构具有以下几个优点: - 弹性和可扩展性:每个微服务可以独立部署和扩展,可以根据需求动态调整服务的数量和规模,从而提高系统的弹性和可扩展性。 - 独立开发和部署:每个微服务都是相对独立的个体,可以由不同的团队独立开发和部署,从而提高开发效率和灵活性。 - 技术多样性:每个微服务可以选择适合自身的技术栈和工具来实现,这样可以更好地满足不同服务的需求,并充分发挥团队成员的专长。 - 容错性和可维护性:由于每个微服务都是独立的,一个服务的故障不会影响整个系统的运行,同时也更容易定位和修复问题,提高系统的容错性和可维护性。 3、具体阐述如何基于微服务架构进行软件设计实现: 基于微服务架构进行软件设计实现可以遵循以下几个步骤: - 识别领域边界:将整个系统拆分为多个领域,每个领域对应一个或多个微服务。通过分析业务需求和功能模块,确定领域边界,并定义各个领域之间的依赖关系。 - 设计接口和通信机制:每个微服务都需要定义清晰的接口和通信机制,以便与其他服务进行交互。可以使用轻量级的通信协议,如HTTP/REST或消息队列,来实现服务之间的通信。 - 实现和部署微服务:根据每个微服务的功能需求,选择合适的技术栈和工具进行实现。每个微服务可以独立开发、测试和部署,确保系统的灵活性和可扩展性。 - 管理服务之间的依赖关系:在微服务架构中,各个服务之间可能存在依赖关系,需要进行管理和协调。可以使用服务注册和发现机制,如Consul或Eureka,来管理服务之间的依赖关系。 - 监控和调试:针对每个微服务,需要建立监控和调试机制,及时发现和解决问题。可以使用日志和指标监控工具,如ELK或Prometheus,来监控系统的运行情况和性能指标。 通过以上步骤,可以基于微服务架构进行软件设计实现,从而实现系统的高弹性、可扩展性和可维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值