一解决了使用VM虚拟机作为dubbo-admin服务器提供者在浏览器访问失败问题
一开始在服务器上面即使运行了zookeeper和dubbo-admin容器都没有访问出dubbo-admin的界面管理器。查看了其他映射端口以及注册中心的地址等等其他参数,都不行,然后就一直没有去处理。就摆了半个月的时间。
idea运行报错日志:
No provider available for the service com.example.shopping_common.service.BrandService from the url zookeeper://192.168.66.100:2181/org.apache.dubbo.registry.RegistryService?application=shopping_manager_api&dubbo=2.0.2&init=false&interface=com.example.shopping_common.service.BrandService&metadata-type=remote&methods=findById&pid=18584&qos.enable=false®ister.ip=192.168.204.1&release=2.7.8&side=consumer&sticky=false×tamp=1710809437063 to the consumer 192.168.204.1 use dubbo version 2.7.8
解决办法:参考了很多文章去解决都不行。最终在这篇文章上找到了解决方法
首先关闭两个容器:
docker stop zk
docker stop dubbo-admin
修改docker的配置,也就是拉取镜像的地址,如下:
{
"registry-mirrors": [
"https://dkkybypp.mirror.aliyuncs.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn",
"https://registry.docker-cn.com",
"https://reg-mirror.qiniu.com/"
]
}
这个配置文件在/etc/docker/daemon.json ,有些是没有的,所以使用vim命令的时候我的就是一片空白,就是新创建的配置文件。
然后保存esc+:wq
重新加载配置,且重新运行docker
docker daemon-reload
systemctl restart docker
最后删除两个容器及镜像。
删除容器:docker rm $(docker ps -a -q)
来批量删除所有容器。这个命令会删除所有已经停止的容器。
删除镜像:docker rmi 镜像id
然后再重新拉取镜像和创建容器。
最后就可以使用ip:9600成功访问到dubbo-admin界面管理器,如下:
二解决了浏览器成功访问到界面之后消费者访问不到生产者提供的服务。
其实这个的问题就是在spring项目中,已经成功连接上dubbo-admin服务提供者,但是消费者在使用生产者的服务的时候就访问异常,产生的日志如下:
Injection of @DubboReference dependencies is failed; nested exception is java.lang.IllegalStateException: Failed to check the status of the service com.example.shopping_common.service.BrandService. No provider available for the service com.example.shopping_common.service.BrandService from the url zookeeper://192.168.66.101:2181/org.apache.dubbo.registry.RegistryService?application=shopping_manager_api&dubbo=2.0.2&init=false&interface=com.example.shopping_common.service.BrandService&metadata-type=remote&methods=findById&pid=13056&qos.enable=false®ister.ip=192.168.204.1&release=2.7.8&side=consumer&sticky=false×tamp=1710851267508 to the consumer 192.168.204.1 use dubbo version 2.7.8
其实当时还有一个报错原因,我忘记了,然后那个报错原因也没有出现,
主要解决办法肯定是消费者没有连接上生产者提供的服务,因此查阅了相关的文章之后,有的要说要在@DubboService和@DubboReference中要跳过检查check(默认为true,要改为false),或者是要配置相关版本version,还有就是要在同一个group。 这些都是两个注解的参数
但是经过尝试之后都不行,最后看到某一篇文章的如下截图:
留意到了@EnableDubbo这个注解,立马想到有可能是这个注解自动配置一些相关东西,然后把它添加到提供者的启动类上立马就好起来了。
然后经过查询相关资料,确实,后面如我所想。
百度文心一言回答:
@EnableDubbo注解在Dubbo框架中起到了重要的作用。这个注解主要用来启用Dubbo的整合配置,从而更好地控制Dubbo的相关配置。
具体来说,@EnableDubbo注解包含了三个关键的组件:@EnableDubboConfig、@DubboComponentScan和@EnableDubboLifecycle。这些组件分别用于:
- 解析配置相关的类并注册到Spring容器。
- 指定@Service的扫描路径,即定义哪些类会被实例化为RPC服务。
- 注册监听器到Spring容器。
在配置Dubbo服务时,开发者可以通过@EnableDubbo注解来指定扫描DubboService注解的范围,从而把对象的类(如UserServiceImpl)实例化并发布为RPC服务。默认情况下,扫描的范围是启动类所在的包及其子包中的所有类。如果需要指定扫描路径,可以使用@DubboComponentScan注解并设置basePackages属性。
值得注意的是,虽然不使用@EnableDubbo注解也能使用Dubbo,因为Dubbo官方提供了一个DubboAutoConfiguration自动配置类来自动配置Dubbo的相关组件。但是,使用@EnableDubbo注解能够提供更细粒度的控制,例如通过注解中的各种属性来配置Dubbo的注册中心、协议、服务提供者和服务消费者等相关配置。
总的来说,@EnableDubbo注解在Dubbo框架中起到了启动和配置Dubbo服务的关键作用,使得开发者能够更方便地管理和控制Dubbo服务的运行。
三进行本地mysql数据源配置时url应该使用三个斜杠/
好啦,原本前面都弄好了,可以安心开发了,结果突然MySQL服务突然消失了,吓死,莫名其妙的,也访问不到MySQL的服务,后面发现使用mysqld -install下载回来也不行,反正就是一直报10061错误,无法连接(注意的是我的MYSQL服务是一直启动的,),最后没办法只能重装;
参考了以下文章:
彻底删除了MySQL
重新安装MySQL(使用安装包安装)