# alibaba **Repository Path**: xbtq77/alibaba ## Basic Information - **Project Name**: alibaba - **Description**: 搭建一个alibaba 基础微服务架构 - **Primary Language**: Unknown - **License**: MulanPSL-1.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 7 - **Forks**: 3 - **Created**: 2020-08-16 - **Last Updated**: 2023-06-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # alibaba spring cloud alibaba 微服务架构 **一、技术介绍** 该项目是基于spring cloud alibaba 技术搭建的 一套功能强大,最好用的微服务架构,该架构提供了,nacos1.3 作为服务注册中心,服务间调用 feign, 使用sentinel 架构进行服务降级,限流,容灾, skywalking 进行链路跟踪,融合了 alibaba seata1.3 demo分布式事务测试案例,提供了 reids(缓存,分布式锁),curator(zookeeper的封装工具类,封装了一些高级特性,如:Cache事件监听、选举、分布式锁、分布式Barrier), es(提供基础单索引查询)mybatis-plus(整合了sql注入,多租户,分页,代码生成),hutool(最好的工具类),通过运用这些技术以及参考开源的gvp项目,搭建的一套最好用的基础微服务架构 **二、工程介绍** ] **1:sca-common-es** 基于开源项目Elasticsearch-ESClientRHL(EsClientRHL是一个可基于springboot的elasticsearch RestHighLevelClient客户端调用封装工具,主要提供了es索引结构工具、es索引数据增删改工具、es查询工具、es数据分析工具) 封装的es工具类 **2:sca-common-curator** 基于zookeeper 的封装工具类 curator介绍(Curator是Netflix公司开源的一套zookeeper客户端框架,解决了很多Zookeeper客户端非常底层的细节开发工作,包括连接重连、反复注册Watcher和NodeExistsException异常等等) **3:sca-common-mybatis-plus** mybatis-plus 应该是目前最好用的mybatis插件,该工具类基于mybatis-plus 实现的分页,多租户,自动填充,担保查询分装等功能 **4:sca-common-redis** 提供了redis 基本操作的封装,分布式锁,整合mybatis二级缓存,spring cache 缓存 ,布隆过滤器,等操作 **5: sca-common-utils** 基于hutool 提供工具类支持,以及自定义的工具类 **6:sca-common-webmvc** 该类是自己针对 mvc 层做的一些封装处理,参数返回结果自动封装状态码,全局异常处理,资源方向拦截处理 **7:sca-server-gateway** 基于spring cloud gateway 实现的网关层。 **8:sca-server-system** 架构的一个测试服务,里面有史上最好用的代码生成工具。 **9:nacos1.0** 里面有nacos1.3 版本注册服务中心 **10: sentinel** 里面是一个sentinel1.3 服务端的服务监控的jar包 **11: skywalking** 是一个链路跟踪的服务端1.3版本 **12: seata** 是阿里的一个分布式事务解决方案 的服务端 **13:seata-client** 是阿里提供的spring cloud 的分布式事务 tcc案列demo 三、服务启用测试教程 当代码从gittee 克隆下来后 ,顺序的启用一般最先启动nacos 就可以了,并无明显的先后顺序,如果该项目下面 有sql 语句,需要先在数据库配置好,部分配置每个人的环境不同 ,需要做修改,这里作者不会详细介绍。 作者下面以最合理的方式启动所有程序 1: 先启动sentinel ,无论是nacos 还是作者本身写的测试服务,都是集成了sentinel 会像sentinel 服务端发送信息。所以最先启动sentinel  如图所示,通过idea 的terminal 进入改jar包的位置 执行命令 java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar 就可以启动了我们通过界面查看我们的sentinel服务端  2:启动nacos 服务端 同样也是nacos 的启动目录,直接调用windows脚本就可以启动成功nacos了  启动后我们在界面上访问如图  3:接下来我们启动 链路跟踪系统skywalking 启动类似上面很简单的操作,进入到相应目录,执行windows 脚本即可  我们便可以在界面上看到效果了  4: 上面是作者启动一些服务中间件, 下面作者将启动自己的测试服务,sca-server-system ,该服务整合了sentinel ,会将服务服务注册到nacos 同时作者在上面提到这是一套功能非常强大,超级好用的微服务架构,那么在接下来我将详细介绍他的强大在哪里,网关服务sca-server-gateway 整合了链路跟踪,spring boot 项目的启动作者将不再介绍截图 **四:特色工能介绍** 这也是上面作者提到过的该架构功能强大,那么强大在哪里呢? 那就是他的特色功能 1、模板代码生成,与架构相配套的模板代码生成,简介的代码,实现了单表任何操作, controller 模板代码案列 ``` package com.sca.server.system.auth.controller; import com.sca.common.exception.BusinessRuntimeException; import BaseQueryVo; import PageEntity; import com.sca.server.system.auth.entity.Menu; import com.sca.server.system.auth.service.IMenuService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.*; import org.springframework.beans.factory.annotation.Autowired; /** *
* 菜单管理 前端控制器 *
* * @author zw * @since 2020-03-05 */ @Api(description = "菜单管理 接口") @RestController @RequestMapping("/auth/menu") public class MenuController { @Autowired private IMenuService menuService; @PostMapping("page") @ApiOperation("获取数据列表") public PageEntity