跳至主要內容

0.纹丝不忒

trydofor原创神翼首页大约 4 分钟

0.纹丝不忒

wings ti6

WingsBoot(代号神翼)是SpringBoot的一个脚手架,没有魔法和定制,主要有以下特点:

  • 提供了多语言多时区真实的解决方案(动态语言包,时区,夏令时,闰秒)
  • 提供了数据库版本和数据的版本管理(安全的表变更,安全的数据维护)
  • 安排了一套保守约定和稳健工程实践(枚举类,配置文件,模板等约定)
  • 解决了软件开发中最难的命名问题(允许使用中文命名,解决行业黑话)
  • 英雄池很深,对技能有独到的理解(读3遍官方文档,debug部分源码)
  • 不懂代码的看文档,都不看的,别用(这是你的homework,及格线)

其目标是使小创业团队,平稳的实现从单应用,到分表分库,到服务化的演变。 在任何项目阶段和业务规模下,能够,

  • 安全快速的重构业务,变更数据模型
  • 对业务和数据有版本管理,保证兼容性
  • 运行时的数据变化亦可追溯,复盘,恢复
  • 对抗业务变化快,设计不足的技术债务

0.1.版本号说明

Wings版本号为标准的3段式open in new window,前2段为SpringBoot的版本, 第3段为Wings的BUILD,例如,3.2.100-SNAPSHOT的含义如下,

  • 3.2 - SpringBoot的MAJORMINOR
  • 100 - 3位数字,当MINOR变化时,应该重置为100
    • 前2位数字,范围[10-99],语义化MINOR含义
    • 后1位数字,范围[0-9],语义化PATCH含义
  • SNAPSHOT - maven的SNAPSHOT

Wings使用了revisionchangelist的CI占位属性,Maven需要3.5.0以上。

0.2.项目结构

Wings由多个子项目构成,都采用了Dota有关的命名,主要包括以下,

  • 沉默术士 wings/silencer - springboot的工程化装配,I18n等
  • 虚空假面 wings/faceless - 数据层,分表分库,数据及库的版本管理
  • 鱼人守卫 wings/slardar - Servlet体系的WebMvc基础约定和封装
  • 术士大叔 wings/warlock - 综合以上的基础业务模块和功能脚手架
  • 蝙蝠骑士 wings/batrider - RPC和微服化
  • 演示例子 example - 集成以上的样板工程和例子
  • 旁观阵线 observe - 生态内关联项目
  • 天辉阵线 radiant - 开箱即用的插拔功能模块

0.3.技术选型

遵循Unix哲学,部分回答了为什么为什么不

  • SpringBoot - 事实标准,从业人员基数大,容易拉扯队伍和技术衔接。
  • Jooq/QueryDsl - 基于限制的艺术,看重其强类型而放弃流行的mybatis体系。 jooq强类型,可以受到IDE加持;不能写成过于复杂的SQL,有利于分库,分服务。
  • Kotlin - 比scala更胜任更好的java,目前仅在flywave支撑性项目中用了kotlin, 而在主要业务场景,仍然主张【少吃糖,写好java】
  • WebMvc - 尽管webflux在模型和性能好于servlet体系,但当前更多的是阻塞IO,多线程场景。
  • Lombok - 简化代码,使用了Experimental功能,开发时,需要自己在pom中引入。
  • Git-flow - git管理的最佳实践。
  • Trunk-based - CI/CD的最佳实践。
  • Guava, commons-lang3, commons-io - 进阶必备的工具包。
  • ShardingSphere - 分表分库,足以解决90%的数据大的问题。
  • Hazelcast - 相比于Redis,Hazelcast更简单,集成度更高。
  • ServiceComb - 更工程化和更紧凑的

0.4.模块依赖

lib格式为依赖lib,否则为Wings模块或功能,无歧义时会简写,如curse, flywave等

  • silencer ← mirana | boot-starter | Spring自动配置
  • silencer-curse ← silencer | aop | Wings基本功能
  • faceless ← curse | meepo | jdbc | 类型主键
  • faceless-codegen ← faceless-jooq | jooq-codegen | 代码生成
  • faceless-flywave ← faceless | kotlin | 版本管理
  • faceless-jooq ← faceless-awesome | jooq | Jooq定制
  • faceless-shard ← faceless-awesome | shardingsphere | 分表分库
  • slardar ← curse | jackson | fastjson | okhttp | cache | sentry | 业务基础
  • slardar-hazel-caching ← slardar | hazelcast | 多级缓存
  • slardar-hazel-session ← hazel-caching | slardar-webmvc | 分布式会话
  • slardar-webmvc ← slardar | starter-json | starter-web | undertow | security-web | springdoc | Web增强
  • slardar-sprint ← hazel-caching | hazel-session | slardar-webmvc | starter-security | starter-actuator | boot-admin | Web集成
  • warlock ← slardar | faceless-jooq | Db基础
  • warlock-codegen ← warlock-awesome | faceless-codegen | flywave
  • warlock-shadow ← slardar-sprint | warlock-awesome | JustAuth | Db|Web|权限
  • warlock-bond ← warlock-shadow | auth-perm体系

0.5.更多章节