zookeeper + dubbo 微服务
前言:zookeeper + dubbo 微服务笔记,在实战中会遇到很多的微服务,这篇笔记主要学习spring cloud 和 zookeeper组成的环境。
参考文章:https://cn.dubbo.apache.org/zh-cn/overview/what/
参考文章:https://cn.dubbo.apache.org/zh-cn/overview/quickstart/java/brief/
参考文章:https://github.com/apache/dubbo-samples
Apache Dubbo RPC服务
Apache Dubbo 是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题,官方提供了 Java、Golang 等多语言 SDK 实现。使用 Dubbo 开发的微服务原生具备相互之间的远程地址发现与通信能力, 利用 Dubbo 提供的丰富服务治理特性,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。Dubbo 被设计为高度可扩展,用户可以方便的实现流量拦截、选址的各种定制逻辑。
在云原生时代,Dubbo 相继衍生出了 Dubbo3、Proxyless Mesh 等架构与解决方案,在易用性、超大规模微服务实践、云原生基础设施适配、安全性等几大方向上进行了全面升级。
Dubbo 作为一款微服务框架,最重要的是向用户提供跨进程的 RPC 远程调用能力。如下图所示,Dubbo 的服务消费者(Consumer)通过一系列的工作将请求发送给服务提供者(Provider)。
当服务提供者启动时,服务提供者将自己提供的服务信息注册到注册中心,注册中心将这些信息记录下来。服务消费者启动时,向注册中心发起订阅,将自己感兴趣的服务提供者的信息拉取到本地并缓存起来,用于后续远程调用。另外,注册中心能够感知到服务提供者新增或者下线,并更新自己的服务信息,同时通知服务消费者告知服务提供者新增/下线,从而消费者也可以动态感知到服务提供者的变化。
Zookeeper注册中心
为了实现这样一个目标,Dubbo 引入了注册中心(Registry)组件,通过注册中心,服务消费者可以感知到服务提供者的连接方式,从而将请求发送给正确的服务提供者。
Dubbo服务搭建
参考文章:https://github.com/apache/dubbo-samples
启动服务注册中心
从dubbo-samples中启动org.apache.dubbo.samples.EmbeddedZooKeeper应用,运行一个内置zookpeeper程序
启动服务提供者
在启动了注册中心之后,下一步是启动一个对外提供服务的服务提供者org.apache.dubbo.samples.provider.Application
在执行完上述命令以后,等待一会出现如下图所示的日志(DubboBootstrap awaiting)即代表服务提供者启动完毕,标志着该服务提供者可以对外提供服务了。
服务提供者注册了一个GreetingsService对象
org.apache.dubbo.samples.provider.Application.java
public class Application { private static final String ZOOKEEPER_HOST = System.getProperty("zookeeper.address", "127.0.0.1"); private static final String ZOOKEEPER_PORT = System.getProperty("zookeeper.port", "2181"); private static final String ZOOKEEPER_ADDRESS = "zookeeper://" + ZOOKEEPER_HOST + ":" + ZOOKEEPER_PORT; public static void main(String[] args) { ServiceConfig<GreetingsService> service = new ServiceConfig<>(); service.setInterface(GreetingsService.class); service.setRef(new GreetingsServiceImpl()); DubboBootstrap.getInstance() .application("first-dubbo-provider") .registry(new RegistryConfig(ZOOKEEPER_ADDRESS)) .protocol(new ProtocolConfig("dubbo", -1)) .service(service) .start() .await(); } }
启动服务消费者
启动一个服务消费者org.apache.dubbo.samples.client.Application来调用服务提供者,也即是 RPC 调用的核心,为服务消费者提供调用服务提供者的桥梁。
在执行完上述命令以后,等待一会出现如下图所示的日志(hi, dubbo),打印出的数据就是服务提供者处理之后返回的,标志着一次服务调用的成功。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY