# kaizen-cloud **Repository Path**: rowstop/kaizen-cloud ## Basic Information - **Project Name**: kaizen-cloud - **Description**: spring cloud alibaba 项目 - 服务注册中心 nacos - 网关 springcloud gateway - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2019-07-03 - **Last Updated**: 2022-06-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 使用nacos作为服务注册中心 - [nacos官方文档](https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html) - 下载安装nacos - 安装 mysql 版本要求 5.6.5+ - 初始化mysql数据库,数据库初始化文件:nacos-mysql.sql - 修改conf/application.properties文件,增加支持mysql数据源配置(目前只支持mysql),添加mysql数据源的url、用户名和密码。 - ubuntu 16.04 启动命令bash startup.sh -m standalone ```properties #以下为参考 spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://localhost:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true db.user=root db.password=123456 ``` - 修改nacos 默认的 用户名密码 - 在添加如下依赖的项目中运行 ```xml org.springframework.cloud spring-cloud-starter-alibaba-nacos-discovery ``` - 运行如下java代码获取加密后的新密码 ```java import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; @Slf4j public class NewPassForNacos{ public static void main(String[] args){ String pass = new BCryptPasswordEncoder().encode("newPassword"); log.info(pass); } } ``` - 用如上加密后的密码 更新nacos数据库中的user表的password ### 注意事项 - 全局时间日期使用 LocalDateTime/LocalDate - 不得使用 如Spring提供的BeanUtils.copyProperties(source,target)等拷贝对象属性值的方法 - 代码应尽量简洁,明了 - 务必遵守开发规范,可参考 [《阿里巴巴开发手册》](https://gitee.com/XeePoo/kaizen-cloud/attach_files) #### 服务介绍,各个服务之间使用 open feign client 进行负载均衡通信 - kaizen-generator 代码生成器 - kaizen-data-server 持久化操作服务,可提供数据依赖或独立运行提供服务支持 - 所有**数据库状态字段**皆使用**通用枚举类** (可参考 `wiki.kaizen.cloud.data.enums.RoleEnum`) - kaizen-plugin 服务插件,只提供依赖,不可独立运行 - kaizen-plugin-redis redis 缓存服务插件 - kaizen-plugin-security 单点登录组件 - kaizen-plugin-spring spring 插件 异常处理控制器等 - kaizen-plugin-util 工具类 - kaizen-service-gateway 网关路由,做服务的路由转发,流量监控,外部请求只有通过网关才能访问具体服务 - kaizen-plugin-sercurity - 重复登录拦截器 拦截当前context的/login 请求 - 鉴权拦截器 拦截当前context的除/login请求以外的所有请求,其他请求可以设置 @Login(Action.SKIP)放行 - 权限拦截器 拦截所有请求 若HandlerMethod/BeanType不包含@Role 注解 直接放行 #### 端口列表(服务如需启动多个实例,端口+1后再启动) - kaizen-data-server:8820 - kaizen-service-gateway:8900 ### 服务注意事项 - nacos 服务注册中心用户名:nacos 密码:kaizen-nacos ### 数据库 设计 **以下字段为所有数据库表的必要字段** | clumn name | jdbc type| java type | length| descreption | |-------------|----------|---------------|-------|--------------| | id | bigint | Long | 20 | 主键 | | deleted | tinyint | Integer | 2 | 逻辑删除标记 | | version | int | Integer | 11 | 乐观锁字段 | | create_time | timestamp | LocalDateTime| |创建时间 | | create_by | bigint | Long | 20 |创建人id | | update_time | timestamp | LocalDateTime| |修改时间 | | update_by | bigint | Long | 20 |修改人id | ### RESTFUL URI命名规范 API URI design CRUD 简单 URI: | 方法 | URL | 功能 | |--------|-----------|-----------------| | GET | /users | 获取用户列表 | | GET | /users/1 | 获取 id 为 1 的用户| | POST | /users | 创建一个用户 | | PUT | /users/1 | 替换 id 为 1 的用户| | PATCH | /users/1 | 修改 id 为 1 的用户| | DELETE | /users/1 | 删除 id 为 1 的用户| 上面是对某一种资源进行操作的 URI,那如果是有关联的资源,或者称为级联的资源,该如何设计 URI 呢?比如某一用户下的产品: | 方法 | URL | 功能 | |--------|---------------------|------------------------------------| | GET | /users/1/products | 获取 Id 为 1 用户下的产品列表 | | GET | /users/1/products/2 | 获取 Id 为 1 用户下 Id 为 2 的产品 | | POST | /users/1/products | 在 Id 为 1 用户下,创建一个产品 | | PUT | /users/1/products/2 | 在 Id 为 1 用户下,替换 Id 为 2 的产品| | PATCH | /users/1/products/2 | 修改 Id 为 1 的用户下 Id 为 2 的产品 | | DELETE | /users/1/products/2 | 删除 Id 为 1 的用户下 Id 为 2 的产品 |