All Projects → 2SE → Dolphin

2SE / Dolphin

Licence: mit
Distributed API Gateway

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Dolphin

Marblerun
Marblerun is the service mesh for confidential computing. Deploy, scale, and verify your confidential microservices on vanilla Kubernetes. 100% Go, 100% cloud native, 100% confidential
Stars: ✭ 98 (+16.67%)
Mutual labels:  distributed-systems, service-mesh
Scalecube Services
ScaleCube Services is a high throughput, low latency reactive microservices library built to scale. it features: API-Gateways, service-discovery, service-load-balancing, the architecture supports plug-and-play service communication modules and features. built to provide performance and low-latency real-time stream-processing. its open and designed to accommodate changes. (no sidecar in a form of broker or any kind)
Stars: ✭ 482 (+473.81%)
Mutual labels:  distributed-systems, service-mesh
Awesome Scalability Toolbox
My opinionated list of products and tools used for high-scalability projects
Stars: ✭ 34 (-59.52%)
Mutual labels:  distributed-systems, service-mesh
Scada.js
Industrial distributed SCADA and MRP library for web, desktop and mobile
Stars: ✭ 66 (-21.43%)
Mutual labels:  distributed-systems
Distkv
A light weight distributed key-value database system with table concept.
Stars: ✭ 69 (-17.86%)
Mutual labels:  distributed-systems
Go Craq
CRAQ (Chain Replication with Apportioned Queries) in Go
Stars: ✭ 75 (-10.71%)
Mutual labels:  distributed-systems
Microdot
Microdot: An open source .NET microservices framework
Stars: ✭ 1,222 (+1354.76%)
Mutual labels:  distributed-systems
Envoy Control
Envoy Control is a platform-agnostic, production-ready Control Plane for Service Mesh based on Envoy Proxy.
Stars: ✭ 66 (-21.43%)
Mutual labels:  service-mesh
Rsf
已作为 Hasor 的子项目,迁移到:http://git.oschina.net/zycgit/hasor
Stars: ✭ 77 (-8.33%)
Mutual labels:  distributed-systems
Awesome System For Machine Learning
A curated list of research in machine learning system. I also summarize some papers if I think they are really interesting.
Stars: ✭ 1,185 (+1310.71%)
Mutual labels:  distributed-systems
Gnes
GNES is Generic Neural Elastic Search, a cloud-native semantic search system based on deep neural network.
Stars: ✭ 1,178 (+1302.38%)
Mutual labels:  distributed-systems
Objstore
A Multi-Master Distributed Caching Layer for Amazon S3.
Stars: ✭ 69 (-17.86%)
Mutual labels:  distributed-systems
Trustgraph
Decentralized trust ratings using signed claims
Stars: ✭ 75 (-10.71%)
Mutual labels:  distributed-systems
Distributedsystems
My Distributed Systems references
Stars: ✭ 67 (-20.24%)
Mutual labels:  distributed-systems
Sfs
The distributed object storage server used by PitchPoint Solutions to securely store billions of large and small files using minimal resources. Object data is stored in replicated volumes implemented like Facebooks Haystack Object Store. Object metadata which essentially maps an object name to a volume position is stored in an elasticsearch index.
Stars: ✭ 78 (-7.14%)
Mutual labels:  distributed-systems
Kubernetes Handbook
Kubernetes中文指南/云原生应用架构实践手册 - https://jimmysong.io/kubernetes-handbook
Stars: ✭ 9,420 (+11114.29%)
Mutual labels:  service-mesh
Harvey
A distributed operating system
Stars: ✭ 1,204 (+1333.33%)
Mutual labels:  distributed-systems
Service Mesh Benchmark
Stars: ✭ 72 (-14.29%)
Mutual labels:  service-mesh
Cause
An EDN-like CRDT (Causal Tree) for Clojure & ClojureScript that automatically tracks history and resolves conflicts.
Stars: ✭ 68 (-19.05%)
Mutual labels:  distributed-systems
Testing Distributed Systems
Curated list of resources on testing distributed systems
Stars: ✭ 1,187 (+1313.1%)
Mutual labels:  distributed-systems

dolphin logo

什么是dolphin

dolphin是一个集成了api网关,服务发现,请求限流,一致性hash路由,服务调度的统一接入框架,旨在对微服务的开发和依赖做到更加智能的管理,加快开发速度,解决中小团队开发微服务的难度。

  • 对于数据的传输使用protobuf,能够更高效率的完成数据传输。
  • 对于相同的服务可以集群部署,分流服务压力,dolphin本身也支持集群,服务注册需要指定dolphin节点。
  • 提供一致性hash进行请求分流,能够满足相同服务增加或者减少时的请求的均匀分布,疏解服务器压力。
  • 提供后端服务之间的依赖调度,使服务依赖管理更简单。
  • 提供对外websocket请求限流,对内grpc服务路由没做限制。
  • 提供白名单接口放行设置,可以有效的管理对外接口的基本限行。
  • 提供kafka订阅机制,完成前端订阅自动分发。

dolphin的概念

当一个团队着手微服务的开发时,往往面对很多抉择,因为微服务存在很多缺点,如系统间api互相访问时,服务的高度依赖耦合难以维护;系统负载增加时,难以进行水平扩展,要面对各式各样的工具组合,增加运维难度。dolphin的出现将这些痛点化繁为简,让项目的开发部署更为方便。

基于dolphin开发微服务

目前已提供go版本微服务sdk可以让开发更有效率,具体描述请跳转至https://github.com/2SE/dolphin-sdk 查阅

go依赖

  1. Go 1.11 or newer.
  2. go mod

如何使用

1. protobuf全局请求体

2. 运行流程

single dolphin

  • dolphin启动后首先将各个服务通过dolphin的http端口发送服务注册请求,dolphin在接收到请求后会将服务连接持久化并执行健康监测,如果注册的多个服务是相同的,dolphin内部会在调用时通过用户一致性哈希路由,服务之间的调用则通过dolphin内部的grpc-server解耦

  • websocket支持订阅,通过约定好的订阅key,服务在运行时可以将用户订阅的信息直接以kv的形式写入到kafka,dolphin会消费指定topic的内容分发给订阅的通道。

启动dolphin

配置文件参数介绍

1. 单节点启动流程

  1. 下载dolphin源码

git clone https://github.com/2SE/dolphin.git

  1. 获取代码依赖

go mod download

  1. 编译dolphin

cd ./cmd/dolphin
go build -o dolphin

  1. 配置文件复制到dolphin运行文件同级目录并启动

./dolphin -c simple.toml

2. 集群启动流程

首先对照startway.md中对于单点和集群的差异修改好配置文件,然后以单点启动的方式逐个启动dolphin节点即可。

微服务依赖dolphin调用示例(支持单节及多节点)

1. 启动测试用服务端注册到dolphin

在dolphin/cmd/serverexample目录下有一个测试用的Grpc服务 
在server.go 中有 
    dolphinAddr = "http://dolphin_ip:dolpin_port"
    //如果与dolphin不在同一台机器请使用内网/外网ip
    appInfo.Address = "local_ip:grpc_server_port" 
修改这两项适配自身环境后运行"go run",
             	

2. 启动测试客户端发起请求

在dolphin/cmd/performance目录下是一个ws请求示例,配合serverexample使用,
该测试用例可结合dolphin中pprof测试dolphin性能。具体pprof使用请自行参考网
上案例。

var (
	//dolphin websocket地址
	addr = "dolphin_ip:ws_port"
)

func main() {
	conns := GetClients(1) //设置生成客户端数量
	for _, v := range conns {
		go func(conn *websocket.Conn) {
			req := getRequests(1) //设置单个客户端串行请求次数
			sendRequest(conn, req)
		}(v)
	}
	time.Sleep(time.Second * 5)
}

修改完配置后运行"go run即可"
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].