#示例程序使用说明: ### 设计说明 > 业务垂直切分方案 ``` restempate 定向负载 一个服务一个库一个盒子,业务逻辑负载曾映射路由表,gateway负载轮询也逻辑业务服务 操作简单,维护复杂,1000个盒子就得1000个服务,新增操作需要新增服务以及数据仓储,对服务负载不均衡,可用性低,一个服务挂了该盒子数据将无法连接,数量大了命名会逐渐丢失规范,问题恢复周期逐渐增大 ``` > 水平切分方案 ``` 操作复杂需实现权重分片,自动化建模等,优势明显,盒子与服务无耦合,可以弹性增减服务数量以达到负载均衡,根据盒子功能动态创建合理数据结构 nacos 轮询服务,gateway统一访问 sharding 以盒子key分片 权重分库, 库内分scheme[key].table[*] 以上都需要一个中心库,来存取盒子信息数量映射关系表,统计表等上探应用功能;统计任务\分布式锁缓存实现,前者需要人工权重分库,后者需实现自动动态扩容权重分库 ``` > 服务能够负载均衡吗? > 维护便捷吗? > 存储服务不够了怎么办?动态扩容维护复杂吗? > 支持限流保护,xa事务吗? >OLAP上探下钻实现复杂吗(盒子逻辑分组,分批查询,分析等)?可控吗?分布式锁竞争大吗?全局任务实现成熟可靠吗? > 方案2搭建 ``` edge_base (embedded /**or standalone**/) : sharding key index\database url config center\data authorize edge_portal (standalone elastic):metric all task\globle config\add or delete edge modul\new and init edge modul basic work space edge_actuator (standalone elastic):query\delete\update\insert data anyone of all edge moduls ``` ### 环境说明: - JAVA版本——jdk8 - 安全框架——Spring Security - ORM框架——Mybatis-Plus - 侵入式Api文档——Swagger2 ### 目录描述: |——java `//核心程序`
|————com.gct.edge.portal
|——————config `//配置类`
|——————controller `//视图or接口层`
|——————entity `//实体对象`
|——————mapper `//dao层数据库操作接口`
|——————service `//具体服务程序接口`
|—————— SubSampleApplication `//启动类`
|——resources `//静态资源or配置文件` ### 发布到阿里云 ```shell scp target/edge_module_actuator-0.0.1-SNAPSHOT.jar root@geo-cruiser.com:/home/geo/geo-test/edge-module scp shellbin/edge-actuator.sh root@geo-cruiser.com:/home/geo/geo-test/edge-module ```