fanliang11 / surging

Surging is a micro-service engine that provides a lightweight, high-performance, modular RPC request pipeline. support Event-based Asynchronous Pattern and reactive programming ,The service engine supports http, TCP, WS,Grpc, Thrift,Mqtt, UDP, and DNS protocols. It uses ZooKeeper and Consul as a registry, and integrates it. Hash, random, polling, Fair Polling as a load balancing algorithm, built-in service governance to ensure reliable RPC communication, the engine contains Diagnostic, link tracking for protocol and middleware calls, and integration SkyWalking Distributed APM
MIT License
3.24k stars 924 forks source link

关于架构一些疑问 #181

Open onlyugly opened 6 years ago

onlyugly commented 6 years ago

这个微服务框架直接暴露给外网用的吗? 感觉不是, 没有http协议, 端上调没有RPC ? DotNetty 和 RabbitMQ 他们是什么关系?因为发现客户端还要配置 RabbitMQ ,? 如果全都采用 RabbitMQ 来做,DotNetty 用在哪个地方的呢??

看了一个demo, 注册服务的时候,为啥没有服务器的key呢? 只看到了IP和端口 然后端上调用的时候,看到了一个接口和一个实现

fanliang11 commented 6 years ago

微服务关键就是微的把握,把握不好就成了服务,就成了soa服务,RPC服务架构。 微如何去把握呢?开发人员无需关注底层的技术实现,无需关注协议,服务治理,无需像以前实现restful还需要架构webapi,还需要配置调用的serviceurl,开发人员应该把精力放到业务实现上,所有的工作都是由引擎和引擎组件提供,surging 内部服务之间的调用是通过dotnetty的Tcp协议,surging对外可以设置WS,HTTP,TCP,后面还会实现MQTT,RTP,RTCP等协议。服务引擎的核心是CPlatform、ServiceHosting和ProxyGenerator三大模块,而dotnetty是通信引擎组件,RabbitMQ 是eventbus引擎组件,这些都可以部署安装到surging 服务引擎中。

grammy-work commented 6 years ago

哪个demo是体现Surging服务内部之间调用的?我想研究一下。

onlyugly commented 6 years ago

谢谢, 服务之间采用dotnetty的Tcp协议封装的RPC吗? 像调用本地方法一样?

fanliang11 commented 5 years ago

服务之间可分为本地和远程调用,而业务可拆分接口和业务模块,引擎扫描加载接口和业务模块生成微服务,引擎可提供多种协议提供给外界调用,而内部服务之间调用是基于dotnetty的TCP协议进行调用,然后可以通过接口创建代理访问或者是通过routepath访问。引擎也可以通过拆分业务模块来控制本地和远程调用(移除业务模块,只留接口会通过远程调用寻址找寻服务提供者进行调用)