learn-tech/专栏/计算机基础实战课/加餐05分布式微服务与智能SaaS.md
2024-10-16 10:18:29 +08:00

173 lines
9.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

因收到Google相关通知网站将会择期关闭。相关通知内容
加餐05 分布式微服务与智能SaaS
你好我是LMOS。
在之前的课程中我们学习到了云计算的IaaS、PaaS层的技术。
这节课让我们一起了解一下分布式微服务和智能SaaS层应用开发技术吧。它们可以帮助你构建出可扩展、可维护更强的应用程序这对于任何计算机开发人员来说都是很有价值的。
初识微服务架构
我们先简单聊聊微服务架构是什么,优缺点有哪些。
什么是微服务架构
微服务架构是一种架构风格,它提倡将单个应用拆分成若干个小的服务,每个服务运行在其独立的进程中,并且通过网络调用来协同工作。每个服务都围绕着特定的业务能力构建,并且通常会使用不同的技术栈来实现。
这种架构风格有利于维护和开发,因为每个服务都相对较小,团队可以独立开发和部署。同时,微服务架构也支持快速迭代和持续交付,因为单个服务的变更不会影响整个系统的稳定性。
微服务架构当然也不是银弹,它也有自己的优点和缺点,为了方便理解,我整理了一张表格来帮你做对比。-
微服务架构的关键要素
接下来,我们看看微服务架构中有哪些关键要素。后面是简化版的微服务架构图。
从图中我们可以看出,微服务架构的核心要素包括五个部分。
第一部分是服务注册与发现,微服务架构中的服务需要使用服务注册中心进行注册和发现,使得服务之间能够互相调用。
第二部分是负载均衡。在微服务架构中,负载均衡组件会将请求按照一定规则,转发到不同的服务实例上,从而提高系统的吞吐量和可用性。
第三部分是服务调用。微服务架构中的服务之间通常使用远程过程调用RPC或者 HTTP 接口来进行通信。
第四部分是服务熔断和降级。在微服务架构中,服务之间的依赖关系非常复杂,为了防止出现故障扩散并保证系统可用性,我们需要使用服务熔断和降级机制来保护服务。
最后还有第五部分,监控和日志。在微服务架构中,需要对每个服务的性能和故障情况进行监控和记录,以便及时发现和解决问题。
这里我也列出了微服务架构的其他要素,你可以参考后面的表格。-
看完上面构成微服务的关键要素之后,不知道你会不会发出感叹——这么多组件,我要是一个一个实现一遍,那需要花多长时间啊!
其实不用慌目前业界已经有了很多优秀的开源实践了基于Spring Cloud框架的Spring Cloud Alibaba就是最佳实践之一接下来我们就来简单了解一下这个框架。
Spring Cloud Alibaba的架构与核心组件
Spring Cloud Alibaba是一个基于Spring Cloud实现的分布式微服务框架它整合了阿里巴巴的中间件产品并提供了与Spring Cloud相似的编程模型和开发体验。Spring Cloud Alibaba的架构基于Spring Cloud实现主要组件可以参考后面的表格。-
Spring Cloud Alibaba的开发模型基于Spring Cloud的注解驱动开发使用者通过在代码中使用注解的方式即可使用这些组件的功能。例如使用者可以用@EnableNacosDiscovery注解来启用Nacos服务发现功能,使用@SentinelResource注解来保护服务的流量和熔断降级等
Spring Cloud Alibaba还提供了与Spring Cloud相似的编程模型和开发体验方便使用者将Spring Cloud Alibaba与现有的Spring Cloud应用轻松地集成起来。比方说可以使用Spring Cloud的Feign客户端来调用Dubbo服务或者使用Spring Cloud 的 Stream框架来使用RocketMQ等。
Spring Cloud Alibaba这个框架还提供了许多辅助工具和插件。例如使用者可以使用Alibaba Cloud的扩展来快速部署应用到阿里云服务器或者使用 Seata 扩展来实现分布式事务处理。
总之Spring Cloud Alibaba是一个功能强大的分布式微服务框架可以帮助使用者快速构建基于阿里巴巴中间件的微服务应用。它提供了丰富的组件和工具方便我们轻松地实现服务注册、发现、负载均衡、流量控制、熔断降级、分布式事务等功能。
为什么选择Spring Cloud Alibaba 构建微服务
使用Spring Cloud Alibaba的优势我同样梳理了表格你可以参考一下。-
然而正是因为Spring Cloud Alibaba功能太过强大组件比较多为了节约搭建微服务脚手架的时间精力我们选择了RuoYi-Cloud这款脚手架进行二次开发。-
上图来自 RuoYi-Cloud 官网RuoYi-Cloud是一套基于Spring Cloud Alibaba 的企业级快速开发脚手架你会在里面发现很多经典技术的组合Spring Boot、Spring Cloud Alibaba、Vue、Element
RuoYi-Cloud功能十分强大非常适合我们专注于业务进行SaaS应用开发。里面内置了很多开箱即用的模块比如系统参数、日志管理、菜单及按钮授权、数据权限、部门管理、角色用户、代码生成等等。此外它还支持在线定时任务的配置和集群部署以及多数据源的管理。
智能 SaaS 应用开发
前面聊到的这些技术具体怎么落地应用呢?我们接着往下看。
SCRMSocial Customer Relationship Management系统是一种分布式智能的软件即服务SaaS应用旨在帮助企业管理和提升客户关系。
SCRM 系统通常涵盖跨越多个渠道的客户互动如电子邮件、IM、社交媒体、网站、移动应用等。这些互动可以是实时的也可以是异步的因为面向的用户量比较大、业务逻辑比较复杂所以比较适合使用分布式微服务架构进行设计。
而LinkWeChat则是一款基于企业微信的开源 SCRM 系统,是我参与设计与开发的。它比较适合作为分布式微服务架构在业务中落地实践的学习案例,这里也简单分享一下。
LinkWechat
LinkWeChat项目基于 RuoYi-Cloud 后台开发框架这离不开RuoYi-Cloud 的开源。
前后端的技术栈你可以对照表格简单了解一下。
这里也简单列了一下这个项目的结构。首先是前端结构。
├── linkwe-pc // 后台项目
├── linkwe-mobile // 移动端项目包含移动工作台、任务宝、群裂变等H5
然后是后端结构。
├── linkwe-api // 系统业务接口模块
├── linkwe-auth // 角色权限部门用户认证等模块
├── linkwe-common // 公共组件模块
├── linkwe-fileservice // 文件服务模块
├── linkwe-framework // 框架配置
├── linkwe-gateway // 网关服务
├── linkwe-scheduler // 定时任务相关模块
├── linkwe-service // 系统service层抽取与数据库相关交互
├── linkwe-wecome // 企微接口实现
├── linkwe-wx-api // 系统中设计微信公众号相关接口模块
基于容器的LinkWechat项目部署实践
大概了解了这个项目,怎么启动它呢?
首先你需要按照加餐03的步骤安装好docker和docker-compose。然后创建目录并拉取代码。
mkdir link-wechat && cd link-wechat
git clone https://gitee.com/LinkWeChat/link-wechat
git clone https://gitee.com/LinkWeChat/link-we-chat-front
git clone https://gitee.com/LinkWeChat_admin/linkwechat-docker
接下来开始打包文件。
# 服务端打包
cd link-wechat
# 重要
cp ../docker-compose/bootstrap.yml config/run/bootstrap.yml
mvn clean package
# pc前端
cd link-we-chat-front/linkwe-pc
yarn install
yarn build
# mobile前端
cd link-we-chat-front/linkwe-mobile
yarn install
yarn build
然后还需要修改配置和SQL。
sql文件
没有变动不需要操作有需要就加到mysql/db文件夹内
增加nacos配置文件
默认已添加到 mysql/db/config.sql
增加xxl-job配置文件
默认已添加
然后打开linkwechat-docker目录依次运行。这样LinkWechat项目就启动起来啦。
# 拷贝指定文件到对应目录
sh copy.sh
# 启动基础模块
sh deploy.sh base
# 启动项目其他模块
sh deploy.sh modules
重点回顾
这节课我们学到了在之前的IaaS、PaaS的架构思路的基础上是如何演进出分布式微服务技术来为智能SaaS应用提供支撑的。
作为一个开源的工业级SaaS应用这个项目可以帮助你初步了解一款分布式SaaS产品是如何设计开发并通过微服务架构落地的。如果学完这节课之后还觉得意犹未尽想要进一步学习分布式、微服务和智能SaaS产品方面的业务经验欢迎加入 LinkWechat项目一起共同建设。
到这里,我们的技术雷达加餐就结束了。恭喜你学完全部内容,也期待你在留言区和我交流互动。