This action will force synchronization from Suzzt/dao-cloud, which will overwrite any changes that you have made since you forked the repository, and can not be recovered!!!
Synchronous operation will process in the background and will refresh the page when finishing processing. Please be patient.
DaoCloud通过SpringBoot构建基于netty开发轻量级的微服务框架.麻雀虽小,五脏俱全(完全自研开发且完全开源,放心使用); 本项目追求轻量、易接入、自定义协议、高可用、高性能、高扩展、易上手等特性; 致力于简化应用程序之间的RPC调用,并为应用程序提供方便、无代码入侵、稳定和高效的点对点远程微服务调用解决方案。对于开发人员来说,dao-cloud的提供了丰富的模型抽象和可扩展接口,为求一站式解决微服务带来的系统架构复杂度,包括网关路由、负载平衡、故障转移、性能监控、微服务治理等;
整个系统不严格重度依赖任何中间价组件即可启动,只需要一个操作系统依赖!
1.注册中心与配置中心都是center来提供能力,两者是一体化集成的
2.这里服务与center、provider与comsumer都是长连接的提供高可用的方案,这里的心跳检测存活分为两种,一种是重心跳,一种轻量级单向交互的心跳(该单向并不是指只有一方发送心跳!)
3.服务间设计由于有长连接的存在,因此center宕机对现有服务间的调用没有影响,但是对配置中心的回调有一定程度的通知失败
4.组件服务都有高可用是采用多节点保证的,高性能是采用最轻化的协议、同通道复用保证的。能保证整个微服务始终在一定程度下提供能力,不保证一些场景下的一致性
首先center cluster一个同步节点复制、相互独立去中心化的集群方案!建议center cluster数不要超过100个节点
1.center集群之间: center节点交互通过重心跳维持集群,加入或宕机在center中相互同步节点数据,节点失效时会将未收到心跳回应的对应节点设置为暂时失效节点,心跳逻辑维持,一直到有响应返回变正常节点
2.center与服务连接: 服务节点端通过拉取存活集群节点来轮询注册一个节点,一旦重试失败,换下一个存活节点,继续一直向center发送重心跳(即一直注册)
3.center与服务负载: center cluster节点加入或宕机时,center会自主发送协调server负载情况
4.center与服务数据: 通过心跳channel发送数据(config、server-info、gateway)同步,这里采用异步发送,并要求响应返回结果,在失败情况下会一定的重试,并做了幂等
注意: 在加入集群时,启动时会清空掉自己所有的配置,所以你需要自行判断center的version新旧。
dao-cloud-core = 核心
dao-cloud-center = 注册+配置-中心(jar)
dao-cloud-gateway = 网关(jar)
dao-cloud-spring-boot-starter = 自动装配(jar)
dao-cloud-example = 使用示例
提供服务之间的RPC调用能力,在轻量dao协议(tcp)下,降低你每次服务间调用的代价
帮助rpc服务发现和服务运行状况检查,使服务注册自己与发现其他服务变得简单。还提供服务的实时健康检查,以防止向不健康的主机或服务实例发送请求
服务中的配置允许您在动态变更的方式下异步通知订阅服务。还支持动态变更配置后回调订阅服务中的监听事件
监控服务负载流量压力,追踪各服务间调用的完整链路,归置日志统一收集输出打印,让你知道每个节点性能消耗情况
为微服务提供了自身的高可用、高性能、合并愈合以及更简单的集群恢复能力
提供请求的鉴权、限流等能力,整合服务入口的统一
+---------+---------+--------------+----------------+----------------+----------------+
| magic | version | message type | serialize type | data length | data content |
| 3(byte) | 1(byte) | 1(byte) | 1(byte) | 4(byte) | ~ ~ |
+---------+---------+--------------+----------------+----------------+----------------+
version: 暂时没用到
serialize type 支持: jdk(DTO请实现序列化接口)、json、hessian(推荐默认)
无需任何配置(追求轻量).所有功能组件都是通过SpringBoot自动装配一键化启动(引入启动依赖jar包)
<dependency>
<groupId>org.dao</groupId>
<artifactId>dao-cloud-spring-boot-starter</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
rpc注解用法说明(其实用法与dubbo、spring-cloud、sofa这些差不多一致)
每个provider一定要设置自己的proxy名字! 确定唯一接口: proxy+provider+version
@DaoService = 用于服务注册 provider:暴露服务的provider名称, version:发布版本, serialize:序列化选择
@DaoReference = 用于服务注入 provider:暴露服务的provider名称, version:发布版本, serialize:序列化选择, loadbanalce:负载路由选择, timeout:超时时间
注册|配置中心(引入dao-cloud-center的pom依赖jar包)
<dependency>
<groupId>org.dao</groupId>
<artifactId>dao-cloud-center</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
通过注解EnableDaoCloudCenter标注在一个SpringBoot工程的启动类上,告诉这是dao-cloud的注册|配置中心(这里内嵌一个web页面)
DaoConfig这个类提供了服务对配置信息的获取、订阅(详情看dao-cloud-example示例)
DaoConfig.getConf ==== 获取配置
DaoConfig.subscribe ==== 订阅配置,在监听到订阅的配置发生变化时,做某些事(回调)
注意: 此外你在配置中心更改配置后,配置中心会自动刷新到服务上
服务注册管理
配置中心管理
项目(dao-cloud-example)中有一个示例
0.把公共的接口请放在api-common中,就是你要暴露出去的函数方法
1.先启动web工程(通过@EnableDaoCloudCenter注解搞定注册中心).你可以访问 http://127.0.0.1:5555/dao-cloud/index 来打开页面管控整个页面(用户名:admin,密码:123456)
2.然后就是provider与consumer,项目中提供了工程(dao-cloud-example)来示例使用
先启动provider,再启动consumer(其实启反也可以)
3.验证! http://127.0.0.1:19998/dao-cloud-example-consumer/demo (rpc调用测试)
还有其他test-demo也都放在工程dao-cloud-example中
本项目是由作者利用平时自由时间创建或迭代,感谢jetbrains
提供的license。所有的微服务异常情况没办法测试全,未在真实项目上实践过!请酌情考虑使用,出事故拒不负责(^_^)! 有问题请提issues;
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。