# GDones-智能云 **Repository Path**: gdones/gdonescloud-boot ## Basic Information - **Project Name**: GDones-智能云 - **Description**: GDones智能云平台-实现系统功能、代码生成、仓储物流、电商分销、企业人资管理等功能 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2023-05-04 - **Last Updated**: 2024-08-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # GDonesCloudBoot GDones开发框架微服务版本 ### 云服务主版本说明 * SpringCloud-Alibaba: 2.2.9.RELEASE * SpringCloud:Hoxton.SR12 * SpringBoot: 2.3.12.RELEASE ### Alibaba组件版本说明 * Sentinel:1.8.5 * Nacos:2.1.0 * RocketMQ:4.9.4 * Dubbo:~ * Seata:1.5.2 ### 其他组件 * 链路追踪:SkyWalking :9.2.0 * 链路追踪-java探针:SkyWalking-Java-agents:8.12.0 ### 模块说明 * gdones-common: 公共共享组件(所有微服务可访问,无端口,静态组件) * gdones-generate: 代码生成器(无端口,静态组件) * gdones-gateway: 服务网关(端口:8200,nacos服务id:gdones.gateway) * gdones-server: 公共基础服务(端口:8100,nacos服务id:gdones.server) * gdones-wms: 仓储物流管理服务(端口:8101,nacos服务id:gdones.wms) ### 使用前准备说明 #### 1.nacos配置且启动 ##### (1)初始化nacos数据源 > 文件在根目录sql文件夹下--》nacos-mysql.sql文件
> 然后将其执行到名称为nacos的数据库下,保存好数据库连接,如下: ```properties jdbc:mysql://localhost:3306/nacos?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai ``` ##### (2)修改nacos配置文件-添加nacos数据源 记住用户名密码,提供给nacos配置文件中进行数据源配置,下面简单附上:
配置文件在:nacos\conf\application.properties ```properties ### If use MySQL as datasource: 使用数据源类型(现在只支持mysql) spring.datasource.platform=mysql ### Count of DB: 数据源数量 db.num=1 ### Connect URL of DB: 数据源配置 db.url.0=jdbc:mysql://localhost:3306/nacos?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai db.user.0=root db.password.0=cxk666 ``` ##### (3)修改nacos配置文件-开启权限配置 ```properties ### If turn on auth system: 使用nacos系统权限配值 nacos.core.auth.enabled=true ``` ##### (4)启动nacos服务 > 1.将仓库中的nacos文件夹,放置在本机,根据操作系统不同使用不同的startup启动项目 #### 2.sentinel启动 在项目根目录下有sentinel包,包中有对应当前版本的控制台界面jar包
可以使用我定义的sentinel-startup.bat 运行控制台
文件内容如下:如需要修改可以自行更改 ```bat java -Dserver.port=8858 -jar sentinel-dashboard-1.8.5.jar pause ``` #### 3.gdones-gateway网关启动注意事项 ##### (1)网关日志 一般在需要优先启动网关
如果网关需要开启gateway记录日志,在idea 启动参数中添加jvm启动参数:
注意:它必须是java系统属性而不适宜SpringBoot属性,否则无效 ```text -Dreactor.netty.http.server.accessLogEnabled=true ``` ##### (2)网关配置跨域源地址 如果前端服务有一个或多个地址需要修改配置 ```yaml # 跨域配置 globalcors: add-to-simple-url-handler-mapping: true cors-configurations: '[/**]': # 在此处修改源地址 allowedOrigins: "http://localhost:25100" ``` #### 4.seata启动 ##### (1)seata持久化模式,推荐使用DB,且基于nacos配置实现 ```yaml server: port: 7091 spring: application: name: seata-server logging: config: classpath:logback-spring.xml file: path: ${user.home}/logs/seata extend: logstash-appender: destination: 127.0.0.1:4560 kafka-appender: bootstrap-servers: 127.0.0.1:9092 topic: logback_to_logstash console: user: username: seata password: seata seata: config: # support: nacos, consul, apollo, zk, etcd3 type: nacos nacos: server-addr: 127.0.0.1:8848 # TODO:nacos地址 namespace: gd_seata group: SEATA_GROUP username: nacos password: nacos data-id: seataServer.properties registry: # support: nacos, eureka, redis, zk, consul, etcd3, sofa type: nacos nacos: application: seata-server server-addr: 127.0.0.1:8848 group: SEATA_GROUP # TODO:seata分组名,注意和nacos保持一直 namespace: gd_seata # TODO:修改为你自己设置nacos命名空间 cluster: default username: nacos # TODO:你的nacos账号密码 password: nacos # store: #这个配置作用不大,因为上面在引入的nacos配置的时候,又会再引入一遍数据库的配置 # support: file 、 db 、 redis # mode: db # server: # service-port: 8091 #If not configured, the default is '${server.port} + 1000' security: secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017 tokenValidityInMilliseconds: 1800000 ignore: urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/api/v1/auth/login ``` ##### (2)初始化seata数据库 数据库初始化sql文件在:sql文件夹下的seata_mysql.sql,创建一个新的数据库名为seata ##### (3)登录nacos,新建命名空间gd_seata 在对应命名空间下创建配置:
Data ID:seataServer.properties
Group:SEATA_GROUP
配置内容: ```properties store.mode=db store.lock.mode=db store.session.mode=db store.db.datasource=druid store.db.dbType=mysql store.db.driverClassName=com.mysql.cj.jdbc.Driver store.db.url=jdbc:mysql://127.0.0.1:3306/seata?useUnicode=true&rewriteBatchedStatements=true store.db.user=root store.db.password=cxk666 store.db.minConn=5 store.db.maxConn=30 store.db.globalTable=global_table store.db.branchTable=branch_table store.db.distributedLockTable=distributed_lock store.db.queryLimit=100 store.db.lockTable=lock_table store.db.maxWait=5000 service.vgroupMapping.account_tx_group=default service.vgroupMapping.storage_tx_group=default service.vgroupMapping.order_tx_group=default ``` ##### (4)启动seata,查看在nacos对应命名空间中是否有服务 启动使用seata目录bin目录下的startup启动即可 注意:使用低版本jdk,建议使用1.8,如果出现chph或者em找不到,请将C:/Windos/System32配置到环境变量中 ##### (5)seata业务数据相关补充说明 每个业务表需要使用seata实现分布式事务管理,需要在对应的业务数据库中都添加一个undo_log表, 该表的作用是实现事务逆解析和回滚 ```sql CREATE TABLE `undo_log` ( `branch_id` bigint NOT NULL COMMENT 'branch transaction id', `xid` varchar(128) NOT NULL COMMENT 'global transaction id', `context` varchar(128) NOT NULL COMMENT 'undo_log context,such as serialization', `rollback_info` longblob NOT NULL COMMENT 'rollback info', `log_status` int NOT NULL COMMENT '0:normal status,1:defense status', `log_created` datetime(6) NOT NULL COMMENT 'create datetime', `log_modified` datetime(6) NOT NULL COMMENT 'modify datetime', UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='AT transaction mode undo table'; ``` 在service层,需要添加分布式事务的位置添加@GlobalTransaction注解 #### 5.Skywalking启动 ##### (1)启动服务方法 在 apache-skywalking-apm-9.2.0\apache-skywalking-apm-bin\bin 目录下
执行 sartup服务,会一次启动多个服务,服务窗口没有日志需要到上级目录log中查看,在linux下可以操作实时日志,windows无法查看实时日志 ##### (2)微服务接入SkyWalking 需要在启动服务时,添加jvm参数 ```text -javaagent:F:\SpringCloudAliBabaComps\apache-skywalking-java-agent-8.12.0\apache-skywalking-java-agent-8.12.0\skywalking-agent\skywalking-agent.jar -DSW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800 -DSW_AGENT_NAME=gdones.server ``` 参数解释:
* -javaagent: 你自己的skywalking-agent.jar 包所在的位置 * -DSW_AGENT_COLLECTOR_BACKEND_SERVICES: skywalking 服务地址(11800是默认的skw提供给微服务的端口) * -DSW_AGENT_NAME:微服务名称(和nacos保持一致) ##### (3)SkyWalking持久化 修改SkyWalking目录下conf目录下的application.yml ```yaml storage: selector: ${SW_STORAGE:mysql} mysql: properties: jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://localhost:3306/swtest?rewriteBatchedStatements=true"} dataSource.user: ${SW_DATA_SOURCE_USER:root} dataSource.password: ${SW_DATA_SOURCE_PASSWORD:cxk666} ``` 只需要创建对应数据库:swtest即可,没有初始化sql,SkyWalking会自动初始化
如需使用自定义链路追踪在方法上添加@Trace注解