![0c052dfa71ab9ff55b3629c9b9c95562.png](https://img-blog.csdnimg.cn/img_convert/0c052dfa71ab9ff55b3629c9b9c95562.png)
怎么说呢?今天搞一个分库分表,感觉微服务有挺多妙处的,实现一个电商流程、通过一个微服务框架:springcloud+springboot+mysqlbatis集成的一个bladex大型系统框架,实现集权的管理,我大概从以下四点谈谈呗!
一、整体思路:
参考https://blog.csdn.net/wohiusdashi/article/details/83957989
在介绍微服务时,首先得先理解什么是微服务,顾名思义,微服务得从两个方面去理解,什么是"微"、什么是"服务", 微 狭义来讲就是体积小、著名的"2 pizza 团队"很好的诠释了这一解释(2 pizza 团队最早是亚马逊 CEO Bezos提出来的,意思是说单个服务的设计,所有参与人从设计、开发、测试、运维所有人加起来 只需要2个披萨就够了 )。 而所谓服务,一定要区别于系统,服务一个或者一组相对较小且独立的功能单元,是用户可以感知最小功能集。....
二、关键词解说。
1、Nacos是阿里巴巴开源的一款支持服务注册与发现,配置管理以及微服务管理的组件。用来取代以前常用的注册
中心(zookeeper , eureka等等),以及配置中心(spring cloud config等等)。Nacos是集成了注册中心和配
置中心的功能,做到了二合一。
2、Sentinel是面向分布式服务框架的轻量级流量控制框架,主要以流量为切入点,从流量控制,熔断降级,系统负载保护
等多个维度来维护系统的稳定性
三、demo案例
1、工具:后端使用 IntelliJ IDEA 、前端使用 IntelliJ WebStorm
2、环境:JDK: 1.8 、Maven: 3.3+ 、MySql: 5.7+ 、Redis: 4.0+ 、Nacos: 1.1.3+ 、Sentinel: 1.5.0+ 、Node Js: 10.15.0+ 、Npm: 5.6.0+
3、两个工程springcloud、BIZ工程
一、springcloud工程
1. 先启动 redis 、 mysql 、 nacos 、 sentinel 等基础服务
2. 启动除 blade-gateway 之外的项目
3. 最后启动 blade-gateway
7个启动类:认证Auth、Des加密、网关CateWay、日记log、资源库resource、用户
er、系统System
二、BIZ工程
启动你需要的子系统、在o
三、数据库。
一个主库bladex、biz子库
四、说说我的感受呗!!
整体来说把微服务当做大型大型三角型、
一个全能代码生成器的业务生成、一个springcloud微服务框架、一个团队管理业务子系统的BIZ工程、最后是一个分库分表构成完成正方形微服务中心。
- 小:微服务体积小,2 pizza 团队。
- 独:能够独立的部署和运行。
- 轻:使用轻量级的通信机制和架构。
- 松:为服务之间是松耦合的。
Spring Boot:
旨在简化创建产品级的Spring应用和服务,简化了配置文件,使用嵌入式web服务器,含有诸多开箱即用微服务功能,可以和spring cloud联合部署。
Spring Cloud:
微服务工具包,为开发者提供了在分布式系统的配置管理、服务发现、断路器、智能路由、微代理、控制总线等开发工具包。
注意:
一、2.4 Swagger
简介
由于架构革新,进入了前后端分离,服务端只需提供RESTful API的时代。
而构建RESTful API会考虑到多终端的问题,这样就需要面对多个开发人员甚至多个开发团队。
为了减少与其他团队对接的沟通成本,我们通常会写好对应的API接口文档。
从最早开始的word文档,到后续的showdoc,都能减少很多沟通成本,但随之带来的问题也比较麻烦。在
开发期间接口会因业务的变更频繁而变动,如果需要实时更新接口文档,这是一个费时费力的工作。
为了解决上面的问题,Swagger应运而生。他可以轻松的整合进框架,并通过一系列注解生成强大的API文
档。他既可以减轻编写文档的工作量,也可以保证文档的实时更新,将维护文档与修改代码融为一体,是目
前较好的解决方案。
常用注解
@Api()用于类;
表示标识这个类是swagger的资源
@ApiOperation()用于方法;
表示一个http请求的操作
@ApiParam()用于方法,参数,字段说明;
表示对参数的添加元数据(说明或是否必填等)
@ApiModel()用于类
表示对类进行说明,用于参数用实体类接收
@ApiModelProperty()用于方法,字段
表示对model属性的说明或者数据操作更改
@ApiIgnore()用于类,方法,方法参数
表示这个方法或者类被忽略
@ApiImplicitParam() 用于方法
表示单独的请求参数
@ApiImplicitParams() 用于方法,包含多个 @ApiImplicitParam
二、 BladeX
├── blade-auth -- 授权服务提供
├── blade-common -- 常用工具封装包
├── blade-gateway -- Spring Cloud 网关
├── blade-ops -- 运维中心
├ ├── blade-admin -- 服务监控
├ ├── blade-develop -- 代码生成
├ ├── blade-flow -- 工作流
├ ├── blade-flow-design -- 工作流设计器
├ ├── blade-log -- 日志模块
├ ├── blade-resource -- 资源模块
├ ├── blade-turbine -- 监控控制台
├ ├── blade-xxljob -- 分布式任务调度
├ ├── blade-xxljob-admin -- 分布式任务调度后端
├ └── blade-zipkin -- 分布式链路追踪
├── blade-service -- 业务模块
├ ├── blade-desk -- 工作台模块
├ ├── blade-system -- 系统模块
├ └── blade-user -- 用户模块
├── blade-service-api -- 业务模块api封装
├ ├── blade-desk-api -- 工作台api
├ ├── blade-dict-api -- 字典api
├ ├── blade-scope-api -- 数据权限api
├ ├── blade-system-api -- 系统api
└── └── blade-user-api -- 用户api
三、导入json配置文件到postman,直接调用oauth2的token接口
https://sns.bladex.vip/article-14982.html