SpringBoot微服务搭建指南架构设计
Posted 书青
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot微服务搭建指南架构设计相关的知识,希望对你有一定的参考价值。
前言
【第一次尝试去写一个系列,肯定会有想不到的地方,欢迎大家留言指正】
本系列将介绍如果从零构建一套分布式系统。同时也是对自己过去工作的一个梳理过程。
本文先整理出构建系统的主要技术选型,以及技术框架。其实在形成如下框架前,我参考了许多资料和结构,也结合中小型公司的时间以及人力等因素综合。
选型
分布式调用框架
可选的有 dubbox, SpringCloud
dubboX:当当基于dubbo搞的,还在维护可以一用,推荐。
SpringCloud:整合了大量组件,相关文档比较复杂,需要针对性的进行阅读,学习成本还是需要一些。
最后选择:dubbox + zk +Spring Boot
云平台
可选方案:阿里云、腾讯云、百度云、华为云等等
大概就是比较不同平台相同配置价格,以及同一平台下不同区域间的价格等等,最终选择阿里云。
Redis
用来做缓存自建成本有点高,选择使用阿里的redis
负载均衡
可选方案: SLB, nginx.
SLB要收钱,但是比较便宜,有保证,不会挂。 但是可配置的很少,不能根据域名做ip映射等
最后为了减少维护成本,直接使用SLB【测试环境还是要搭建nginx】
CDN
用来缓存静态文件等,七牛、阿里可选
最终选择七牛,服务好,反应及时【价格也会低一些】
身份认证
可选方案:session+redis、jwt
从扩展性来说确实jwt比较适合,但是有一个小麻烦,就是处理token的失效问题。【其实主要问题是使用token增加了代码复杂度】
最终选择session+redis
扩展:有人会说浏览器可以很好支持cookie但是移动端很难支持,其实移动端支持也不难。ios端可以从HTTPCookieStorage读取cookie,请求时设置cookie。android端使用Cookiejar。
权限控制
shiro:一直都在用shiro,也比较简单
数据库
oracle:使用阿里云的话自建oracle还是比较麻烦的
mysql:可以自建也可以用阿里的RDS
最终选择阿里云数据库RDS
持久层框架
常用Mybatis,那就继续用吧
部署架构图
附一张阿里的部署架构图供大家参考
完整流程图地址:https://www.processon.com/view/5b4d9b26e4b09a67416e1611
项目调用关系图
项目模块说明
service 为业务层 即服务提供者(包含 service实现及facadeService实现、Dao)
facade为接口层(只定义 接口类 与 实体类)
middle为服务中间层 (通过facade层 调用service层 )可以理解为web层与api层共用的模块
web为服务消费者,包含web页面 (通过facade层 调用service层 )
api为服务消费者,主要为客户端提供api服务 (通过facade层 调用service层 )
以上是关于SpringBoot微服务搭建指南架构设计的主要内容,如果未能解决你的问题,请参考以下文章
5.springcloud微服务架构搭建 之 《springboot集成Hystrix》