Skip to content

Latest commit

 

History

History
162 lines (96 loc) · 6.79 KB

6-微服务后端合作.md

File metadata and controls

162 lines (96 loc) · 6.79 KB

Java 第六轮考核-微服务-分布式(强烈推荐)

此文档为第六轮微服务考核,Java后端合作分布式系统考核,该轮为我们今年新上线的考核,可以适当推迟考核时间。

目的

  • 理解分布式系统的核心概念
  • 提高解决分布式系统中常见问题的能力
  • 熟悉微服务的架构设计
  • 提高团队协作能力

任务一

知识点

  • 掌握微服务架构和Web工作原理
  • 掌握HTTP协议和RPC调度方法
  • 掌握BASE、CAP理论

背景

最近,FanOne喜欢的小哥哥发布的高数视频被限流了,FanOne希望能有一个视频网站来帮助学长推广视频,增强学长的信心,因为没有相关的技术,FanOne每天都失眠,FanOne的舍友很担心FanOne接下来的四级考试,想起了你们曾经开发的视频网站,希望你们用微服务架构重构原来的视频网站,帮助FanOne和小哥哥度过难关

任务(四到五人合作,选取其中第四轮完成的好的作业,一人重构一到两个微服务,并部署测试)

你除了需要完成下面模块的开发(每个模块对应一个微服务),你还需要完成这些事情

  1. 小组讨论各自完成的微服务

  2. 基于Spring Cloud进行开发

  3. 学习服务路由(网关)Spring Cloud Gateway等

  4. 服务注册发现:Eureka、Nacos、Zookeeper等

  5. 分布式事务:Seata等

  6. 学习Spring Cloud原生微服务通信方式

  7. 使用Dubbo,openFeign,gRPC等方式实现RPC通信请求

  8. 项目支持负载均衡(Load Balance),实现轮询(Round-Robin)策略即可

  9. 使用docker-compose快速搭建起你的开发环境(例如使用docker-compose启动你的mysql、redis等)

  10. 编写项目文档,其中包括接口、项目结构目录树

模块名 最低需要完成的接口 数量
用户 注册、登录、用户信息、上传头像 4
视频 投稿、发布列表、搜索视频、热门排行榜 4
互动 点赞操作、点赞列表、评论、评论列表、删除评论 5
社交 关注操作、关注列表、粉丝列表、好友列表 4
聊天 单聊群聊、查询聊天记录 2~3
网关 请求分发、登录授权 0

项目部署

首先说明,请开放云服务的安全组,添加IP白名单保证其他同学可以正常使用你部署的接口

nacos的占用内存会比较大,在限制使用内存大小的情况下服务器还是宕机,我们就需要购买新的大内存服务器,多人合作下,时间安排容易冲突,所以可考虑一起购买一台按量付费或包月8G内存(推荐火山云,新人一个月三四十,五个人就是一个月就几块)的服务器,剩下的白嫖阿里云的2G服务器,参考以下文章

https://west2-online.feishu.cn/wiki/G1O2wQLYviyyLzkCnPjcBscRnDe

我们后期将召开会议,根据各位的学习进度等,来决定是否对nacos和redis,mysql等进行集群部署

部署建议(下面仅作为参考,可以自己部署)

假设我们有六台服务器(Server 1、Server 2、Server 3、Server 4、Server 5、Server 6),以下是一个优化的部署建议:

Server 1(新购买的大内存服务器)

  • API 网关(Gateway):作为所有请求的入口,负责路由和负载均衡。
  • Nacos:作为服务注册与发现中心。
  • Redis:作为缓存。
  • Seata:第二个 Seata 实例,保证分布式事务的高可用性。
  • MySQL:作为数据库,存储所有系统必须的数据。

Server 2(白嫖的服务器)

  • 用户服务(User Service):处理用户相关的逻辑,如注册、登录、用户信息等。
  • 用户服务(User Service):处理用户相关的逻辑,如注册、登录、用户信息等。
  • 用户服务(User Service):处理用户相关的逻辑,如注册、登录、用户信息等。

Server 3(白嫖的服务器)

  • 微服务 A:处理特定业务逻辑。
  • 微服务 A:处理特定业务逻辑。
  • 微服务 A:处理特定业务逻辑。

Server 4(白嫖的服务器)

  • 微服务 B:处理特定业务逻辑。
  • 微服务 B:处理特定业务逻辑。
  • 微服务 B:处理特定业务逻辑。

Server 5(白嫖的服务器)

  • 微服务 C:处理特定业务逻辑。
  • 微服务 C:处理特定业务逻辑。
  • 微服务 C:处理特定业务逻辑。

合作交流

帮助

我们会召开一周一次的大会,了解你们的完成情况,并提供帮助,后期根据人数情况,我们也考虑亲自带你们完成此轮考核

组长

你们需要指定一名队长,队长需要完成总体的规划

包括以下任务

  • 技术选型,架构设计

  • 网关,用户模块设计

  • 数据库设计

  • 组织队内协调

组长需要在git上建立仓库,其他成员fork仓库并push自己的代码,组长作为仓库拥有者,负责审核并合并组内队员的push

组员

组员需要编写对应的模块并进行性能分析和编写测试,push代码

**备注:**遇到无法解决的困难,我们会给你提供帮助

队内协调

  1. 首先能决定好一份API文档来保证合作的顺利,文档需要更新请及时在群里通知你的队友

  2. 了解每个同学学习的技术领域,比如不同的组员可能使用不同的mq,选择适合的mq,如果有必要,请教会你的组员该mq的使用方式

  3. 每隔三天,进行一次组内会议,同步进度,解决已知的困难,预期之后一周的目标

考核

负责不同技术领域的组员我们会进行不同程度的提问,组长负责回答整体的方向,为防止出现一人懈怠,整组项目完成度不高而淘汰的情况,我们会对每个组员进行不同的评估,而不是以一个组都无法通过考核的方式进行,不要过分担心自己被分配任务简单而表现欠佳,做好分内的工作就可以通过考核,我们不会无情的pass你

仔细思考

网关

  • 为什么使用网关,没有网关会出现什么问题

服务调用

  • 不同的服务之间应该如何相互调用

用户信息

  • 思考如何正确的将认证信息传入下游模块

事务

  • 传统的Spring事务还可以用吗,如何进行技术选型

Bonus

  1. 对项目整合OpenTracing分布式链路追踪系统(例如JaegerSkywalking

  2. 项目中集成熔断降级功能,推荐使用Hystrix

  3. 如果在写完这些还有余力,证明你是真正的佬,可以去写单人项目的限流组件,作为加分项