学习 spring-cloud-aibaba第九篇,综合应用微信小程序《背诗词》


特别声明:自己学习慕课网大目师兄的微服务视频的综合应用,第九篇,九九归一

1.背诗词小程序界面和功能点

1.1 界面展示

大家如果要体验我的小程序,微信搜索 背诗词 就可以了,全匹配的那个小程序就是我的

  • 首页
    学习 spring-cloud-aibaba第九篇,综合应用微信小程序《背诗词》
  • 赏析
    点击首页的“赏析”按钮
    学习 spring-cloud-aibaba第九篇,综合应用微信小程序《背诗词》
  • 默写
    学习 spring-cloud-aibaba第九篇,综合应用微信小程序《背诗词》
  • 我的
    未登录
    学习 spring-cloud-aibaba第九篇,综合应用微信小程序《背诗词》
    已登录
    学习 spring-cloud-aibaba第九篇,综合应用微信小程序《背诗词》
  • 历史记录
    学习 spring-cloud-aibaba第九篇,综合应用微信小程序《背诗词》
  • 积分明细
    学习 spring-cloud-aibaba第九篇,综合应用微信小程序《背诗词》
  • 规则介绍
    学习 spring-cloud-aibaba第九篇,综合应用微信小程序《背诗词》
  • 技术架构
    学习 spring-cloud-aibaba第九篇,综合应用微信小程序《背诗词》

1.2 功能介绍

  • 总体介绍
    每天随机给用户更新一首诗词,如果用户在背诵里通过了该诗词的背诵检查,它会记录在历史记录页面,以后不会再出现在你的首页;如果你不会背诵,没关系,第二天会帮你更新一首新的诗词。这样每天都不单调,并且你可以随时查看所有你曾经背诵过的诗词,这是这个小程序存在的意义。
  • 首页诗词展示
    未登录时,随机展示一首诗词;已登录时,展示当前分配给用户的诗词
  • 诗词更换定时任务
    凌晨一点,给所有用户更换新的诗词
  • 诗词音频
    点击首页的喇叭按钮,播放当前诗词的朗诵音频
    我的服务器网速不快(带宽老贵了),所已点击之后可能会有些延迟
  • 背诵
    通过纯汉字的对比,判断用户是否正确背诵记忆了诗词
  • 登录
    对接微信授权登录接口
  • 上滑分页加载
    历史记录和积分明细页面有用到

2.架构图

2.1 理想中架构图

微服务嘛,当然是群组,这样才能高可用,适应多并发
学习 spring-cloud-aibaba第九篇,综合应用微信小程序《背诗词》

2.2 实际上的架构图

然而我只有一个内存2G的服务器,还是在打折的时候买的,单实例都部署不下去,内存不够,服务器太卡了,当初想的实在太多了,在朋友借了一个4G的服务器之后,瞬间感觉变大款了,然而也只够部署下面的一套,实际上的架构图是这样的
学习 spring-cloud-aibaba第九篇,综合应用微信小程序《背诗词》

3 代码开源

整个项目的代码都已上传到gitee,包括java代码和小程序代码,当然不包括nginx,本地运行也没有必要用到nginxhttps://gitee.com/zengchen2016/springcloud-demo.git,五个项目放在一起了

4 线上体验

大家如果要体验我的小程序,微信搜索 背诗词 就可以了,全匹配的那个小程序就是我的
学习 spring-cloud-aibaba第九篇,综合应用微信小程序《背诗词》

5.披过的荆斩过的棘

  • 小程序开发
    真的是对着小程序的开发文档一点点看的,需要什么找什么,哪里不会点哪里
  • UI设计,css样式
    最让后端程序员没脾气的东西,没有之一
  • nginx
    微信小程序只能用域名+https请求,这意味着你得域名备案+弄一个合法证书,你的nginx必须要配置443接口,使用合法的证书,失效不合法的不行的,这个搞了几天,最后用的是keymanager
  • jenkins
    很方便的一个打包部署的自动化工具,可惜因为服务器内存原因,舍弃了
  • 最满意的代码
    user项目里的一个定时任务 com.zengchen.user.task.CurrentPoemTaskBak.java
    虽然因为业务逻辑原因,它废弃了,但是它是这项目里我写的最令自己满意的代码, 以前有个面试官问过我这个问题,我当时有点懵,现在我体会到了

6.存在的不足

  • 逻辑都放到了controller里实现了,比如LoginController,应该放到service层里才对,这样便于用事物管理起来
  • 定义了FeignFallbackhandler ,发生调用错误的时候,本可以在里面写点逻辑挽回点什么的,但是里面没有写具体的实现
  • alibaba组件版本比较低,没有按照老师的视频升级,因为我还没看到那里去
  • 仍然有很多组件没有应用到,比如 消息队列,服务容错,链路监控