示意图
详细版本
RPC两个核心模块:序列化和通讯
================================================================================
Apache Dubbo |ˈdʌbəʊ| 提供了六大核心能力:面向接口代理的高性能RPC调用,智能容错和负载均衡,服务自动注册和发现,高度可扩展能力,运行期流量调度,可视化的服务治理与运维。
Dubbo的注册中心
Dubbo的注册中心有很多种,但官方推荐使用Zookeeper,其余有Redis、Multicast、Simple注册中心。
Dubbo网络通信框架
Dubbo 默认使用 Netty 框架,也是推荐的选择,另外内容还集成有Mina、Grizzly。
==================================================================================
顾名思义 zookeeper 就是动物园管理员,他是用来管 hadoop(大象)、Hive(蜜蜂)、pig(小 猪)的管理员, Apache Hbase 和 Apache Solr 的分布式集群都用到了 zookeeper;Zookeeper: 是一个分布式的、开源的程序协调服务,是 hadoop 项目下的一个子项目。他提供的主要功 能包括:配置管理、名字服务、分布式锁、集群管理。
====================================================================================
访问Zookeeper官网下载
下载 压缩包格式的zookeeper
将下载的文件解压缩
从cmd窗口进入Zookeeper文件夹下的bin目录,执行zkServer.cmd启动
如果报错提示 zoo.cfg缺失,那就进入zookeeper的conf文件夹下将zoo_sample.cfg复制一份改名为zoo.cfg即可
再次重启则成功
=================================================================================
从 github打开项目 dubbo-admin
从GitHub爬取项目教程如下:
使用 Git爬取 GitEE、GitLab、GitHub项目的教程
dubbo-admin采用前后端分离的形式管理项目
爬取文件如下
♨️部署dubbo-admin-server
运行后端项目必须启动 zookeeper,否则启动失败
cmd窗口进入dubbo-admin-server,执行以下命令
mvn clean package
打包部署项目
在这里等大概5分钟左右即可部署完成
部署完成后生成target目录
cmd窗口进入target目录执行以下命令
java -jar dubbo-admin-server-0.4.0.jar
后端项目运行成功~
♨️部署dubbo-admin-ui
在这里需要有 node 环境
教程如下
cmd窗口进入dubbo-admin-ui,执行以下命令下载依赖
npm install
下载完毕后,执行启动命令
npm run dev
启动成功
访问前端生成的本地地址
默认用户名密码均为root
输入即可登录成功
后端的地址必须和前端工程vue.config.js下的target路径一样,否则404!
七、SpringBoot 整合Dubbo + Zookeeper
===================================================================================================
基于SpringBoot项目整合Dubbo + Zookeeper 实现消费者消费服务提供者的服务
消费者为订单模块,传入用户id去查询用户模块的用户信息,实现远程RPC调用服务,分布式调用,而不是单体架构
服务提供者为用户模块,返回用户信息
-
父工程:dubbo-boot
-
公共API(接口及实体类):GmallPublicInterafce
-
服务提供者:UserServiceProvider
-
服务消费者:OrderServiceConsumer
🚃父级工程 dubbo-boot
pom.xml
<?xml version="1.0" encoding="UTF-8"?><project xmlns=“http://maven.apache.org/POM/4.0.0”
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.5.5
org.example
dubbo-boot
pom
1.0-SNAPSHOT
GmallPublicInterface
UserServiceProvider
OrderServiceConsumer
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
🚃公共API模块 GmallPublicInterface
pom.xml
<?xml version="1.0" encoding="UTF-8"?><project xmlns=“http://maven.apache.org/POM/4.0.0”
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>
dubbo-boot
org.example
1.0-SNAPSHOT
4.0.0
GmallPublicInterface
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
com.alibaba
dubbo
2.6.2
org.apache.curator
curator-framework
2.12.0
com.alibaba.boot
dubbo-spring-boot-starter
0.2.0
还有一些核心的接口及实体类
🚃服务提供者模块 UserServiceProvider
pom.xml
<?xml version="1.0" encoding="UTF-8"?><project xmlns=“http://maven.apache.org/POM/4.0.0”
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>
dubbo-boot
org.example
1.0-SNAPSHOT
4.0.0
UserServiceProvider
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
org.example
GmallPublicInterface
1.0-SNAPSHOT
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-maven-plugin
src/main/java
**/*.xml
false
src/main/resources
libs/
libs
**/*.jar
application.yml
配置端口号
server:
port: 8084
配置Dubbo
dubbo:
application:
name: UserServiceProvider
registry:
address: zookeeper://127.0.0.1:2181
protocol:
name: dubbo
port: 20881
monitor:
protocol: registry
consumer:
timeout: 2000
UserServiceImpl
package com.wanshi.service.impl;
import com.alibaba.dubbo.config.annotation.Service;
import com.wanshi.bean.UserAddress;
import com.wanshi.service.UserService;
import java.util.Arrays;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
@Override
public List getUserAddressList(String userId) {
System.out.println(“UserServiceImpl…old…”);
// TODO Auto-generated method stub
UserAddress address1 = new UserAddress(1, “北京市朝阳区”, “1”, “Bug 终结者”, “010-5625321”, “Y”);
UserAddress address2 = new UserAddress(2, “北京市海淀区”, “1”, “小王”, “010-66253834”, “N”);
return Arrays.asList(address1,address2);
}
}
🚃服务消费者模块 OrderServiceConsumer
pom.xml
<?xml version="1.0" encoding="UTF-8"?><project xmlns=“http://maven.apache.org/POM/4.0.0”
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>
dubbo-boot
org.example
1.0-SNAPSHOT
4.0.0
OrderServiceConsumer
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
org.example
GmallPublicInterface
1.0-SNAPSHOT
org.springframework.boot
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
![img](https://i-blog.csdnimg.cn/blog_migrate/9096aa4be25a5a04a066f478214e9e00.jpeg)
总结:心得体会
既然选择这个行业,选择了做一个程序员,也就明白只有不断学习,积累实战经验才有资格往上走,拿高薪,为自己,为父母,为以后的家能有一定的经济保障。
学习时间都是自己挤出来的,短时间或许很难看到效果,一旦坚持下来了,必然会有所改变。不如好好想想自己为什么想进入这个行业,给自己内心一个答案。
面试大厂,最重要的就是夯实的基础,不然面试官随便一问你就凉了;其次会问一些技术原理,还会看你对知识掌握的广度,最重要的还是你的思路,这是面试官比较看重的。
最后,上面这些大厂面试真题都是非常好的学习资料,通过这些面试真题能够看看自己对技术知识掌握的大概情况,从而能够给自己定一个学习方向。包括上面分享到的学习指南,你都可以从学习指南里理顺学习路线,避免低效学习。
大厂Java架构核心笔记(适合中高级程序员阅读):
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
3540586)]
[外链图片转存中…(img-UAoa5Er3-1713293540587)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
![img](https://i-blog.csdnimg.cn/blog_migrate/9096aa4be25a5a04a066f478214e9e00.jpeg)
总结:心得体会
既然选择这个行业,选择了做一个程序员,也就明白只有不断学习,积累实战经验才有资格往上走,拿高薪,为自己,为父母,为以后的家能有一定的经济保障。
学习时间都是自己挤出来的,短时间或许很难看到效果,一旦坚持下来了,必然会有所改变。不如好好想想自己为什么想进入这个行业,给自己内心一个答案。
面试大厂,最重要的就是夯实的基础,不然面试官随便一问你就凉了;其次会问一些技术原理,还会看你对知识掌握的广度,最重要的还是你的思路,这是面试官比较看重的。
最后,上面这些大厂面试真题都是非常好的学习资料,通过这些面试真题能够看看自己对技术知识掌握的大概情况,从而能够给自己定一个学习方向。包括上面分享到的学习指南,你都可以从学习指南里理顺学习路线,避免低效学习。
大厂Java架构核心笔记(适合中高级程序员阅读):
[外链图片转存中…(img-QpZ2cXDN-1713293540587)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!