架构师论文备考-论云原生架构及其应用

news/2024/9/19 19:14:20 标签: 云原生, 架构

摘要

        2022年3月,我有幸参与了公司的新智慧公交系统的研发工作。该系统基于B/S架构设计,并以多租户SaaS平台化为发展目标,旨在创建一个功能更全面、性能更卓越、稳定性更强、用户体验更佳的公交调度一体化平台。在这一项目中,我主要参与了系统的整体架构决策以及新智慧公交平台中调度模块的设计与开发工作。文本详细阐述了智慧公交系统在云原生架构方面的具体实践,智慧公交系统在云原生架构的应用上,不仅体现了现代微服务设计理念和云原生技术趋势,还通过综合运用多种开源技术和工具,构建了一个高性能、高可用、易于扩展和维护的智慧交通解决方案。

正文:

        云原生架构的三大核心技术——容器、微服务和DevOps,共同构建了现代云计算应用的基础。这些技术遵循服务化、弹性、可观测性和自动化四大设计原则,以确保应用在云环境中的高性能、高可用性和高效运维。

        服务化原则通过将应用拆分为一组小型、独立且松耦合的服务,每个服务专注于应用的一个功能模块,并通过API进行通信,实现了快速迭代和部署。这种设计促进了敏捷开发和持续交付,允许开发团队在不干扰其他服务的情况下独立升级和扩展每个服务。

        弹性原则确保了应用能够根据需求动态扩展或缩减资源,以应对云环境中的流量波动。应用可以自动调整服务器实例、存储和带宽等资源,以优化性能和成本效率,保持稳定运行。

        可观测性原则要求系统提供充足的信息,使外部观察者能够理解其内部状态。通过收集、分析和展示应用性能指标、日志及跟踪数据,良好的可观测性帮助运维团队实时监控应用状态,快速诊断和解决问题,从而提升性能。

        自动化原则通过软件工具和脚本自动执行重复性任务和流程,减少手动操作,提高效率和一致性。在云原生环境中,自动化包括自动部署、测试、监控、故障恢复和资源管理,是实现持续集成和持续部署(CI/CD)的关键。

        这四大原则共同铸就了云原生应用的设计理念,使应用更加适应云环境,充分运用云资源的弹性和可扩展性,同时确保应用的可靠性和运维的效率。通过这种设计,云原生应用能够提供更加灵活、可靠和高效的服务,满足现代数字化业务的需求。

        智慧公交系统构建在公司业务中台和数据中台之上,采用微服务架构设计,并以敏捷开发模式为指导,采用小团队协作模式,实现了系统的功能开发和迭代。

         智慧公交系统作为一个物联网平台,需要与多种设备进行频繁的交互。其交互架构设计分为三层:感知层负责接收来自各种设备(如终端、客流仪、GPS定位系统)的消息;S17作为消息中间层,对设备消息进行封装,并按照通用协议进行处理和转换;服务层由智慧公交系统的tap服务组成,主要负责设备信令消息的接收与发送,采用Kafka消息队列以事件驱动的方式完成设备交互。事件被封装为IOT Schema和biz Schema两种交互事件,分别用于对接设备和上层业务事件。项目选择MQTT协议作为与设备通信的标准,因为MQTT更适合于频繁交互且信号移动的物联网设备。

        为了实现高效的服务请求处理和流量管理,系统采用了Nginx作为服务代理和转发组件,确保了服务的稳定性和高可用性。 在内部组件的交互方面,智慧公交系统选择了Dubbo作为RPC框架,以实现系统内部服务间的解耦和高效通信。而对于与外部服务的交互,系统则使用了Fegin客户端,通过声明式REST客户端简化了与外部API的集成。

    服务治理方面,系统采用了Nacos作为服务注册和发现中心,实现了服务的动态注册、发现和负载均衡。调度服务的设计采用了事件驱动模式,借助Kafka消息队列完成了消息的发布和订阅,有效提升了系统的异步处理能力和解耦性。

        在分布式系统的监控和追踪方面,项目初期通过traceId实现了日志链路追踪,为后续的故障排查和性能优化提供了重要依据。为了进一步提升链路追踪的完善性和项目的可观测性,项目计划集成SkyWalking开源框架,以实现更加细粒度和全面的服务追踪。

        智慧公交平台基于公司中台网关构建,通过网关地址对外提供统一的访问入口,增强了服务的安全性和访问控制。同时,利用中台的能力,项目实现了单点登录、熔断降级和友好性提示等功能,提升了用户体验和系统的稳定性。

        在部署和运维方面, 智慧公交项目的部署策略经历了几次迭代和优化。最初,项目使用Jenkins进行打包和通过自建部署脚本完成部署流程。随着项目的发展,公交智慧平台项目统一增加了installer模块,用于自动部署多语言词条、页面菜单资源配置、Nacos配置和SQL脚本的版本迭代。随着公司新的CI/CD平台的建成,智慧公交项目开始整合到这一平台,实现了通过统一CI/CD平台的一键化部署,简化了部署流程并提高了效率。

        整体而言,智慧公交系统的项目架构设计充分考虑了可扩展性、模块化和高性能,通过微服务架构和领域驱动设计,实现了系统的灵活性和可维护性,为公交系统的智能化升级提供了坚实的技术基础。

        在智慧公交项目的开发过程中,版本迭代和CI/CD自动化部署的问题曾是项目正式上线的重大挑战。由于平台是新开发的,且迭代频繁,不同版本间有时会存在显著的差异,如第13版本实现了数据库租户的SaaS化功能,导致数据库结构发生重大变化。为应对这种情况,我们制定了详尽的升级文档,并编写了数据库迁移脚本,以确保系统升级的顺利进行。运维和开发团队保持密切沟通,共同确保项目升级的稳定性。
        另一个问题是,由于领导层变更和核心人员离职,团队缺乏具有全局视野的成员,这导致系统初始设计存在不足,需要不断优化。为此,我们以项目经理提出的需求为基础,专注于实现这些需求,并在后续版本中不断进行功能性改进和维护。系统上线前进行了全面测试,以避免严重问题的发生。

        随着项目的落地,我们收集了用户反馈和需求,通过对系统现有问题的分析,我们不断迭代改进智慧公交系统,致力于打造一个满足公交用户需求的一体化智慧公交平台。通过这些努力,我们确保了系统能够稳定运行,并且能够不断适应和满足用户的变化需求。相信通过时间和经验的积累,在多元化的云原生架构的支撑下,我们的项目也将变得越来越完善,以提供更智能、更满意的用户体验。


http://www.niftyadmin.cn/n/5666016.html

相关文章

推荐给大家5款小众无广告的软件

​ 你是否喜欢一些小众且无广告的软件?如果是的话,我这边有一些给你推荐的。 1.进程管理——ProcessExplorer ​ ProcessExplorer是一款高级系统进程管理工具,可实时查看Windows系统中所有正在运行的进程及其详细信息。它提供了比任务管理器…

规律题总结(持续更新)

题目链接&#xff1a;5.煎蛋的梦想 - 蓝桥云课 (lanqiao.cn) #include <iostream> #include <algorithm> using namespace std; int n,k,sum0; bool fun(int x) {for(int i2; i<(int)sqrt(x); i){if(x%i0){return false;break;}}return true; } int main() {ci…

Flash扩展——NOR Flash、NAND Flash 和 SD NAND

Flash扩展——NOR Flash、NAND Flash 和 SD NAND 文章目录 Flash扩展——NOR Flash、NAND Flash 和 SD NAND闪存&#xff08;Flash Memory&#xff09;**非易失性原理**NAND Flash 和 NOR Flash 对比 NOR FlashNAND Flash NAND分类——SLC、MLC、TLC和QLCNAND擦除&#xff08;E…

米客方德SD NAND 掉电测试

SD NAND 异常上下电测试的作用 SD NAND 异常上下电测试是一项关键的测试步骤&#xff0c;对确保SD NAND在不同电源条件下的稳定性和可靠性至关重要。 通过模拟正常和异常电源情况&#xff0c;测试可以验证设备的电源管理功能、检测潜在错误和异常行为&#xff0c;并评估设备在…

【模板进阶】模板的万能引用

一、类型的区别和基本定义 1.1类型的基本定义 首先先看一个最简单例子&#xff1a; //类型的区别和基本定义 void func(const int& abc) { } //abc的类型为const int&这里的 a b c abc abc被推导为什么类型&#xff1f; 显然可见&#xff0c;为 c o n s t i n t &am…

面向切面:单元测试、事务、资源操作

目录 一、单元测试二、事务2.1、概述2.1.1、编程式事务2.1.2、声明式事务 2.2、JdbcTemplate2.3、基于注解的声明式事务2.3.1、基本用例-实现注解式的声明事务2.3.2、事务属性&#xff1a;只读2.3.3、事务属性&#xff1a;超时2.3.4、事务属性&#xff1a;回滚策略2.3.5、事务属…

OpenHarmony(鸿蒙南向开发)——标准系统方案之瑞芯微RK3566移植案例(上)

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ OpenHarmony&#xff08;鸿蒙南向开发&#xff09;——轻量系统STM32F407芯片移植案…

Mysql梳理6——order by排序

目录 6 order by排序 6.1 排序数据 6.2 单列排序 6.3 多行排列 6 order by排序 6.1 排序数据 使用ORDER BY字句排序 ASC&#xff08;ascend&#xff09;:升序DESC(descend):降序 ORDER BY子句在SELECT语句的结尾 6.2 单列排序 如果没有使用排序操作&#xff0c;默认…