SpringBoot微服务搭建指南【1】架构设计

前言

本系列将介绍如果从零构建一套分布式系统。同时也是对自己过去工作的一个梳理过程。

本文先整理出构建系统的主要技术选型,以及技术框架。其实在形成如下框架前,我参考了许多资料和结构,也结合中小型公司的时间以及人力等因素综合

选型

分布式调用框架

可选的有  dubbox, SpringCloud

dubboX:当当基于dubbo搞的,还在维护可以一用,推荐。

SpringCloud:整合了大量组件,相关文档比较复杂,需要针对性的进行阅读,学习成本还是需要一些。

最后选择:dubbox + zk +Spring Boot

云平台

可选方案:阿里云、腾讯云、百度云、华为云等等

阿里云-华北1A部署方案(按量)

服务商

地区

用途

硬件类型

CPU

内存

硬盘

带宽

1年费用

2年费用

3年费用

备注

阿里云

华北1

Web服务器

通用型g5

4C

16G

300G高速

0

7191

11844

12690

 

阿里云

华北1

Web服务器

通用型g5

4C

16G

300G+200G高速

0

7905

13020

13950

 

阿里云

华北1

Oracle服务器

计算型c5

8C

16G

300G+300G高速

0

13280.4

21873.6

23436

 

阿里云

华北1

nginx服务器

计算型c5

8C

16G

200G+300G高速

50M 按量¥0.72/GB

12923.4

21285.6

22806

不含流量费

合计

 

 

 

 

 

 

 

41299.8

68023.2

72882

不含流量费

                       

阿里云-华北1A部署方案(单独)

服务商

地区

用途

硬件类型

CPU

内存

硬盘

带宽

1年费用

2年费用

3年费用

备注

阿里云

华北1

Web服务器

通用型g5

4C

16G

300G高速

0

7191

11844

12690

 

阿里云

华北1

Web服务器

通用型g5

4C

16G

300G+200G高速

0

7905

13020

13950

 

阿里云

华北1

Oracle服务器

计算型c5

8C

16G

300G+300G高速

0

13280.4

21873.6

23436

 

阿里云

华北1

nginx服务器

计算型c5

8C

16G

200G+300G SSD

0

12923.4

21285.6

22806

 

阿里云

华北1

弹性公网IP

配置费用¥0.02 /小时 流量:¥0.72 /GB

50M峰值

175.2

350.4

525.6

 

合计

 

 

 

 

 

 

 

41299.8

68023.2

72882

不含流量费

                       

阿里云-华北1C部署方案(固定)

服务商

地区

用途

硬件类型

CPU

内存

硬盘

带宽

1年费用

2年费用

3年费用

备注

阿里云

华北1

Web服务器

通用型g5

4C

16G

300G高速

0

7191

11844

12690

 

阿里云

华北1

Web服务器

通用型g5

4C

16G

300G+200G高速

0

7905

13020

13950

 

阿里云

华北1

Oracle服务器

计算型c5

8C

16G

300G+300G高速

0

13280.4

21873.6

23436

 

阿里云

华北1

nginx服务器

计算型c5

8C

16G

200G+300G高速

50M 固定

47118.9

89676.6

125392.5

不含流量费

合计

 

 

 

 

 

 

 

75495.3

136414.2

175468.5

 

                       
                       

阿里云-华北3部署方案(单独)

服务商

地区

用途

硬件类型

CPU

内存

硬盘

带宽

1年费用

2年费用

3年费用

备注

阿里云

华北3

Web服务器

通用型mn4

4C

16G

300G高速

0

5663.04

9327.36

9993.6

 

阿里云

华北3

Web服务器

通用型g5

4C

16G

300G+200G高速

0

6234.24

10268.16

11001.6

 

阿里云

华北3

Oracle服务器

计算型n4

8C

16G

300G+300G高速

0

8041.17

13244.28

14190.3

 

阿里云

华北3

nginx服务器

计算型n4

8C

16G

200G+300G高速

0

7755.57

12773.88

13686.3

 

阿里云

华北3

弹性公网IP

配置费用¥0.02 /小时 流量:¥0.80 /GB

50M

175.2

350.4

525.6

 

合计

 

 

 

 

 

 

 

27869.22

45964.08

49397.4

不含流量费

                       

阿里云-华北3部署方案(按量)

服务商

地区

用途

硬件类型

CPU

内存

硬盘

带宽

1年费用

2年费用

3年费用

备注

阿里云

华北3

Web服务器

通用型g5

4C

16G

300G高速

0

7191

11844

12690

 

阿里云

华北3

Web服务器

通用型g5

4C

16G

300G+200G高速

0

7905

13020

13950

 

阿里云

华北3

Oracle服务器

计算型n4

8C

16G

300G+300G高速

0

13280.4

21873.6

23436

 

阿里云

华北3

nginx服务器

计算型n4

8C

16G

200G+300G高速

50M 按量¥0.82/GB

7755.57

12773.88

13686.3

不含流量费

合计

 

 

 

 

 

 

 

36131.97

59511.48

63762.3

 

                       

阿里云-华北3部署方案(固定)

服务商

地区

用途

硬件类型

CPU

内存

硬盘

带宽

1年费用

2年费用

3年费用

备注

阿里云

华北3

Web服务器

通用型g5

4C

16G

300G高速

0

7191

11844

12690

 

阿里云

华北3

Web服务器

通用型g5

4C

16G

300G+200G高速

0

7905

13020

13950

 

阿里云

华北3

Oracle服务器

计算型n4

8C

16G

300G+300G高速

0

13280.4

21873.6

23436

 

阿里云

华北3

nginx服务器

计算型n4

8C

16G

200G+300G高速

50M 固定

45750.57

88763.88

127671.3

 

合计

 

 

 

 

 

 

 

74126.97

135501.48

177747.3

 

                       
                       

百度云-华北北京部署方案(固定)

服务商

地区

用途

硬件类型

CPU

内存

硬盘

带宽

1年费用

2年费用

3年费用

备注

百度云

华北-北京

Web服务器

通用型

4C

16G

300G

0

8246.88

13910.4

14904

 

百度云

华北-北京

Web服务器

通用型

4C

16G

500G

0

9840.48

16598.4

17784

 

百度云

华北-北京

Oracle服务器

通用型

8C

16G

500G

0

11712.96

19756.8

21168

 

百度云

华北-北京

nginx服务器

通用型

8C

16G

500G

50M 固定

46921.56

90174

126793.8

 

合计

 

 

 

 

 

 

 

76721.88

140439.6

180649.8

 

大概就是比较不同平台相同配置价格,以及同一平台下不同区域间的价格等等,最终选择阿里云。

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

部署架构图

附一张阿里的部署架构图供大家参考

SpringBoot微服务搭建指南【1】架构设计_第1张图片

完整流程图地址:https://www.processon.com/view/5b4d9b26e4b09a67416e1611

SpringBoot微服务搭建指南【1】架构设计_第2张图片

项目调用关系图

SpringBoot微服务搭建指南【1】架构设计_第3张图片

项目模块说明

service 为业务层 即服务提供者(包含 service实现及facadeService实现、Dao

facade为接口层(只定义 接口类 实体类)

middle为服务中间层 (通过facade 调用service )可以理解为web层与api层共用的模块

web为服务消费者,包含web页面 (通过facade 调用service )

api为服务消费者,主要为客户端提供api服务 (通过facade 调用service )

 

 

你可能感兴趣的:(SpringBoot微服务搭建指南【1】架构设计)