摘 要
博客是用来分享自己的心情和动态拉近人与人之间的距离,它改变了人们的在网上的交流方式,也增强了互联网的趣味性。 “微服务”是最近两年开始流行起来,但是其实早在20年前都有专家提出过,只不过当时的用户量并不像现在那么高。例如:一个系统的功能越丰富就会导致技术债务越多,但是基于单体应用(一个war包)开发的代码库越来越臃肿,可维护性差,代码“不坏不修”。为此,引入“微服务”架构的方式可以改善这个状况,每个微服务中心均在独立的进程中负责每种功能的业务,由一系列独立运行的微服务中心共同构建整个系统。现在web的前后端分离是企业的一种趋势,前后端分离同样也是技术创新的一种体现。得益于开发分离的趋势,Vue与SpringCloud的组合方式在如今的Web网站开发中占据重要的位置。
关键字: 微服务,Vue,SpringCloud.
ABSTRACT
Blog is used to share their feelings and dynamically close the distance between people. It changes the way people communicate on the Internet, and also enhances the interest of the Internet. "Micro service" has become popular in the past two years, but in fact, it was proposed by experts as early as 20 years ago, but the user volume at that time was not as high as it is now. For example, the more functions a system has, the more technical debts it will incur. However, the code base developed based on single application (a war package) is becoming more and more bloated, with poor maintainability and "no damage, no repair" of the code. Therefore, the introduction of "micro service" architecture can improve this situation. Each micro service center is responsible for the business of each function in an independent process, and a series of independent micro service centers jointly build the whole system. Nowadays, the separation of front end and back end of web is a trend of enterprises, and the separation of front end and back end is also a reflection of technological innovation. Thanks to the trend of development separation, the combination of Vue and spring cloud occupies an important position in today's Web site development.
KEY WORDS: Micro service,Vue,SpringCloud.
目 录
摘 要 I
ABSTRACT II
1 绪论 1
1.1 研究的背景 1
1.2 研究的目的 1
2 博客的相关理论与技术 2
2.1 博客系统理论分析 2
2.1.1 博客的微服务分析 2
2.1.2 博客的分布式分析 3
2.1.3 关于分布式锁分析 4
2.1.4 博客的高可用分析 5
2.2 前端的搭建 6
2.2.1 Node-Npm简介 6
2.2.2 采用的UI框架 7
2.2.3 v-charts图表 8
2.3 Vue架构 9
2.3.1 关于MVVM模式 9
2.3.2 关于Vue的生命周期 10
2.3.3 Ajax运行原理分析 11
2.3.4 使用Axios的原因 12
2.4 SpringCloud架构 13
2.4.1 SpringCloud框架 13
2.4.2 Zuul路由网关 14
2.4.3 Eureka服务发现组件 15
2.4.4 Feign负载均衡 16
2.4.5 Hystrix容错机制 17
2.4.6 Turbine聚合微服务 18
2.4.7 Zipkin跟踪微服务 19
2.5 Mysql数据库 20
2.6 Mybatis框架 21
2.6.1 Mybatis分页插件 22
2.7 Redis缓存中间件 23
2.7.1 Redisson综合中间件 24
2.8 RabbitMQ消息中间件 25
2.9 Elasticsearch搜索引擎 26
2.10 阿里云的增值服务 26
2.10.1 阿里云智能验证 26
2.10.2 阿里云短信服务 28
2.10.3 阿里云OSS存储 29
2.11 关于支付宝支付 30
2.11.1 同步与异步通知 31
2.12 本章总结 31
3 博客的需求分析 32
3.1 博客的微服务功能分析 32
3.2 本章总结 32
4 博客的设计分析 33
4.1 博客的架构设计 33
4.2 博客的数据库设计 34
4.2 本章总结 34
5 博客的设计实现 35
5.1 博客总体架构的实现 35
5.1.1 Vue架构的实现 35
5.1.2 SpringCloud架构的实现 37
5.1.3 博客的高可用的实现 38
5.2 用户的个人中心 39
5.2.1 登录的智能验证 39
5.2.2 博客的登录注册 41
5.2.3 登录的权限验证 42
5.3 用户的安全中心 45
5.3.1 用户的安全布局 45
5.3.2 用户的邮箱注册 46
5.3.3 用户的手机注册 49
5.3.4 用户的安全认证 51
5.3.5 用户的密码安全 52
5.3.6 用户的账号申诉 53
5.4 用户的文件中心 54
5.4.1 用户的头像存储 54
5.4.2 博客的图片存储 55
5.5 用户的签到中心 56
5.6 用户的会员中心 58
5.6.1 会员的流程控制 58
5.7 用户的支付中心 59
5.7.1 用户的支付中心 59
5.7.2 用户的账户钱包 60
5.7.3 用户的会员支付 63
5.7.4 用户的支付账单 67
5.8 用户的博客中心 69
5.8.1 用户的访问主页 69
5.8.2 用户的文章中心 70
5.8.3 用户的文章布局 75
5.8.4 点赞用户的文章 76
5.8.5 收藏用户的文章 78
5.8.6 评论用户的文章 79
5.8.7 博客的文章排行榜 80
5.9 博客的搜索中心 82
5.9.1 搜索引擎的应用 82
5.9.2 博客的分类搜索 83
5.9.3 博客的分类主页 85
5.10 本章总结 85
6 博客的测试分析 86
6.1 博客的请求抗压性分析 86
6.2 博客的功能扩展性分析 87
7 博客的注意事项 88
7.1 博客整合Hystrix后首次请求失败问题 88
7.2 SpringCloud中Turbine 1.X版本BUG 88
7.3 关于前后分离的CORS跨域问题 89
7.3.1 前后端分离的跨域 89
7.3.2 Nginx反向代理 90
8 结束语 91
致 谢 92
参考文献 93