All Projects → apache → Dubbo Kubernetes

apache / Dubbo Kubernetes

Apache Dubbo integration with k8s

Programming Languages

java
68154 projects - #9 most used programming language

Labels

Projects that are alternatives of or similar to Dubbo Kubernetes

Springbootexamples
Spring Boot 学习教程
Stars: ✭ 794 (+845.24%)
Mutual labels:  dubbo
Ssm
销售系统项目,spring+spring mvc+mybatis+dubbo+kafka+redis+maven
Stars: ✭ 55 (-34.52%)
Mutual labels:  dubbo
Dubbo Trace
基于Dubbo的分布式系统调用跟踪Demo
Stars: ✭ 72 (-14.29%)
Mutual labels:  dubbo
Skyeye
对java、scala等运行于jvm的程序进行实时日志采集、索引和可视化,对系统进行进程级别的监控,对系统内部的操作进行策略性的报警、对分布式的rpc调用进行trace跟踪以便于进行性能分析
Stars: ✭ 805 (+858.33%)
Mutual labels:  dubbo
Ha Db
探索高效的SAAS结构,单体应用动态切换数据库。
Stars: ✭ 44 (-47.62%)
Mutual labels:  dubbo
Nacos Group.github.io
nacos-group.github.io
Stars: ✭ 64 (-23.81%)
Mutual labels:  dubbo
Goodskill
🐂基于springcloud +dubbo构建的模拟秒杀项目,模块化设计,集成了分库分表、elasticsearch🔍、gateway、mybatis-plus、spring-session等常用开源组件
Stars: ✭ 786 (+835.71%)
Mutual labels:  dubbo
Rsf
已作为 Hasor 的子项目,迁移到:http://git.oschina.net/zycgit/hasor
Stars: ✭ 77 (-8.33%)
Mutual labels:  dubbo
Springboot
SpringBoot 整合各类框架和应用
Stars: ✭ 54 (-35.71%)
Mutual labels:  dubbo
Rpcx Java
rpcx implementation in Java for server side and client side
Stars: ✭ 71 (-15.48%)
Mutual labels:  dubbo
Dubbo Spring Boot Mybatis Redis
通过dubbo+spring boot+mybatis+redis等主流技术搭建成一套分布式服务框架
Stars: ✭ 889 (+958.33%)
Mutual labels:  dubbo
Dubbo Invoker
http proxy with Spring Boot for any dubbo generic invoke
Stars: ✭ 23 (-72.62%)
Mutual labels:  dubbo
Eshop Soa
EShop基于Dubbo实现SOA服务化拆分,并基于RocketMQ解决了分布式事务(新版SpringBootSOASkeleton)
Stars: ✭ 65 (-22.62%)
Mutual labels:  dubbo
Geek Framework
基于SpringBoot+Shiro+Redis+Jwt+Thymeleaf+MyBatis 开发的后台用户、角色、权限、会员管理、RestFul、Token和前台用户登录注册以及前后台用户分离的脚手架,技术交流请加QQ群:805442966
Stars: ✭ 804 (+857.14%)
Mutual labels:  dubbo
Javacore
Java程序员所需要掌握的核心知识: 集合框架&JVM机制&多线程与并发框架&网络协议&Spring&Dubbo&MySQL&微服务等;希望胖友小手一抖,右上角来个 Star,感恩 1024
Stars: ✭ 73 (-13.1%)
Mutual labels:  dubbo
Java Knowledge Mind Map
【🌱🌱Java服务端知识技能图谱】用思维脑图梳理汇总Java服务端知识技能
Stars: ✭ 787 (+836.9%)
Mutual labels:  dubbo
Spring Boot Extend
在springboot基础上的扩展项目,快速集成Zookeeper、Dubbo、Apollo、Mybatis多数据源
Stars: ✭ 63 (-25%)
Mutual labels:  dubbo
Dubbo Arthas Demo
演示Arthas排查Dubbo问题的Demo
Stars: ✭ 83 (-1.19%)
Mutual labels:  dubbo
Interface Test
接口测试工具,支持Dubbo、HTTP接口
Stars: ✭ 74 (-11.9%)
Mutual labels:  dubbo
Javaall
这是一个Java开发宝典,所有的Java技术都在这里,用心学习,努力提升!
Stars: ✭ 67 (-20.24%)
Mutual labels:  dubbo

dubbo-kubernetes

Dubbo integration with k8s

初步思考

kubernetes是天然可作为微服务的地址注册中心,类似于zookeeper、Consul。 具体来说,kubernetes中的Pod是对于应用的运行实例,Pod的被调度部署/启停都会调用API-Server的服务来保持其状态到ETCD;kubernetes中的service是对应微服务的概念,定义如下

A Kubernetes Service is an abstraction layer which defines a logical set of Pods and enables external traffic exposure, load balancing and service discovery for those Pods.

概括来说kubernetes service具有如下特点

每个Service都有一个唯一的名字,及对应IP。IP是kubernetes自动分配的,名字是开发者自己定义的。 Service的IP有几种表现形式,分别是ClusterIP,NodePort,LoadBalance,Ingress。 ClusterIP主要用于集群内通信;NodePort,Ingress,LoadBalance用于暴露服务给集群外的访问入口。

乍一看,kubernetes的service都是唯一的IP,在原有的Dubbo/HSF固定思维下:Dubbo/HSF的service是有整个服务集群的IP聚合而成,貌似是有本质区别的,细想下来差别不大,因为kubernetes下的唯一IP只是一个VIP,背后挂在了多个endpoint,那才是事实上的处理节点。

此处只讨论集群内的Dubbo服务在同一个kubernetes集群内访问;至于kubernetes外的consumer访问kubernetes内的provider,涉及到网络地址空间的问题,一般需要GateWay/loadbalance来做映射转换,不展开讨论。针对kubernetes内有两种方案可选:

  • DNS: 默认kubernetes的service是靠DNS插件(最新版推荐是coreDNS), Dubbo上有个 proposal 是关于这个的。我的理解是static resolution的机制是最简单最需要支持的一种service discovery机制,具体也可以参考Envoy在此的观点,由于HSF/Dubbo一直突出其软负载的地址发现能力,反而忽略Static的策略。同时蚂蚁的SOFA一直是支持此种策略,那一个SOFA工程的工程片段做一个解释。这样做有两个好处,1)当软负载中心crash不可用造成无法获取地址列表时,有一定的机制Failover到此策略来处理一定的请求。 2)在LDC/单元化下,蚂蚁的负载中心集群是机房/区域内收敛部署的,首先保证软负载中心的LDC化了进而稳定可控,当单元需要请求中心时,此VIP的地址发现就排上用场了。

  • API:DNS是依靠DNS插件进行的,相当于额外的运维开销,所以考虑直接通过kubernetes的client来获取endpoint。事实上,通过访问kubernetes的API server接口是可以直接获取某个servie背后的endpoint列表,同时可以监听其地址列表的变化。从而实现Dubbo/HSF所推荐的软负载发现策略。具体可以参考代码:

以上两种思路都需要考虑以下两点

  • kubernetes和Dubbo对于service的名字是映射一致的。Dubbo的服务是由serviename,group,version三个来确定其唯一性,而且servicename一般其服务接口的包名称,比较长。需要映射kubernetes的servie名与dubbo的服务名。要么是像SOFA那样增加一个属性来进行定义,这个是改造大点,但最合理;要么是通过固定规则来引用部署的环境变量,可用于快速验证。
  • 端口问题。默认Pod与Pod的网络互通算是解决了。需要验证。
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].