微服务架构(待深入)
Dubbo的架构
========
节点角色说明:
•Provider暴露服务的服务提供方
•Container:服务运行容器
•Consumer:调用远程服务的服务消费方
•Registry:服务注册与发现的注册中心
•Monitor:统计服务的调用次数和调用时间的监控中心
快速入门
====
Zookeeper下载
===========
我选择的是这个版本,带有bin目录的
Windows
-
直接解压出来
-
将conf目录下的zoo_sample.cfg复制一份,改名为zoo.cfg(因为默认配置文件是这个名字)
-
然后退回安装目录,新建一个空的data 和 log
4 . 进入conf中修改zoo.cfg配置文件,将dataDir=/tmp/zookeeper 修改成 zookeeper 安装目录所在的 data 文件夹,再添加一条添加数据日志的配置(需要根据自己的安装路径修改)。
5 . 双击 bin目录下的 zkServer.cmd 启动程序:
6 . 控制台显示 bind to port 0.0.0.0/0.0.0.0:2181,表示服务端启动成功!
7 . 双击同目录下的zkCli.cmd 启动客户端
出现 Welcome to Zookeeper!,表示我们成功启动客户端。
注意
当需要一直启动zookeeper时,这两个cmd不能关掉不能关掉不能关掉!!!!!!!要保持运行
Linux
tar -zxvf (你下载的压缩包名称)
cd (你的安装目录)
cd conf/
cp zoo_sample.cfg zoo.cfg
vimzoo.cfg
此处需要按照上边一样修改,注意需要根据自己的安装路径修改 , 同样也得创建data和log,修改端口等
cd …
cd bin/
sh zkServer.sh start
sh zkCli.sh
- 如果下载的版本不一样,可能需要自行查看一下帮助命令
详细配置(SpringBoot)
================
多模块开发
此处其实用到了三个模块,一个是公共接口模块,一个是provider模块,一个是consumer模块
其中后两个都共同去依赖公共模块
而provider又依赖consumer模块
想要完整源码的话可以评论区联系一下博主
特别注意
我们两个模块都要去@import com.example.dubbo_interface.service.StuService;
- 那这里就意味着什么,别的项目得能找到这个包啊,要怎么把公共接口dubbo_interface里边的包暴露出来,可供别人调用呢,这里是用到了maven的install命令,把dubbo_interface这一模块打包到公共仓库去了,这样别的项目就可以引用里边的内容了!
如果对maven这一块还不太熟悉的话,具体可以参照这篇 maven(先给自己挖个坑,整理好了会发出来的)
以下一切配置都完成了之后,记得先打开zookeeper!打开zookeeper!打开zookeeper!
provider提供服务端
yml文件
dubbo:
application:
#配置应用的名称(应用可以是提供者也可以是消费者)
name: dubbo_service
#协议中心
protocol:
#固定的, 是只有provider才需要吗?
name: dubbo
port: 20882
#指定注册中心的位置,127.0.0.1是ip地址,2181是端口号
registry:
address: zookeeper://127.0.0.1:2181
######这里是关键,很多教程没有配置,导致zookeeper连接不上
timeout: 50000
#要暴露的服务所在的包(配置扫包)
#也可以在注解那里扫包
scan:
base-packages: com.example.dubbo_service.service
#指定该项目模块启动的端口,不可与其他项目端口重复
server:
port: 8081
具体Service服务端
package com.example.dubbo_service.service;
import com.example.dubbo_interface.service.StuService;
import org.apache.dubbo.config.annotation.DubboService;
//暴露服务
@DubboService
public class StuServiceImpl implements StuService {
@Override
public String login() {
return “111”;
}
}
引入Dubbo依赖和控制zookeeper的客户端
这里使用的是2.7.8版本,搭配2.5.5版本的Springboot
注意依赖接口模块
com.example
dubbo_interface
0.0.1-SNAPSHOT
org.apache.dubbo
dubbo-spring-boot-starter
2.7.8
org.apache.curator
curator-recipes
5.1.0
org.apache.curator
curator-framework
5.1.0
启动类
@EnableDubbo注解一般写在启动类上,默认会扫描当前注解所在类的包路径下的所有**@Dubboservice**标注的组件,如果需要自定义扫描注册的bean(服务实现),可以使用@DubboComponentScan或扫描属性实现。另外,@EnableDubbo注解等效于在配置文件中使用dubbo.scan.base-packages一步到位(开启dubbo功能+扫描dubbo的服务实现bean)
package com.example.dubbo_service;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//开启基于注解的Dubbo功能,同时扫描要暴露的服务端所在的位置
@EnableDubbo(scanBasePackages = “com.example.dubbo_service.service”)
@SpringBootApplication
public class DubboServiceApplication {
public static void main(String[] args) {
SpringApplication.run(DubboServiceApplication.class, args);
}
}
consumer消费者端
注意,其不同于传统的service,这里为了能独立启动,也要设置成web项目那种(再借助Springboot启动)
yml文件
dubbo:
application:
#指定当前服务/应用的名字(同样的服务名字相同,不要和别的服务同名)
name: dubbo_controller
consumer不需要这个通信协议,因为consumer无需通过Dubbo来远程调用
protocol:
name: dubbo
port: 20881
#指定注册中心的位置,127.0.0.1是ip地址,2181是端口号
registry:
address: zookeeper://127.0.0.1:2181
######这里是关键,很多教程没有配置,导致zookeeper连接不上
timeout: 50000
##发现按照官网只配consumer的话,也还是连不到zookeeper的
consumer:
##后来发现这里就等效于DubboReference注解那里的timeout设置
timeout: 3000
##此处是用在暴露扫包的,consumer不需要暴露服务
scan:
base-packages: com.example.dubbo_service.service
#指定该项目模块启动的端口,不可与其他项目端口重复
server:
port: 8082
具体Controller消费者端
package com.example.dubbo_controller.controller;
import com.example.dubbo_interface.service.StuService;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping(“/stu”)
public class StuController {
/**
-
远程注入
-
从zookeeper注册中心获取该service的访问url
-
进行远程调用RPC
-
将结果封装成一个代理对象,给变量赋值
*/
//没timeout好像就出问题了??连不上??
//也可以在yml里边的consumer的timeout进行配置
@DubboReference/(timeout = 5000)/
StuService stuService;
@RequestMapping(“/login”)
public String login(){
return stuService.login();
}
}
同上引入依赖
com.example
dubbo_interface
0.0.1-SNAPSHOT
org.apache.dubbo
dubbo-spring-boot-starter
2.7.8
org.apache.curator
curator-recipes
5.1.0
org.apache.curator
curator-framework
5.1.0
启动类
package com.example.dubbo_controller;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//开启基于Dubbo的注解
@EnableDubbo
@SpringBootApplication
public class DubboControllerApplication {
public static void main(String[] args) {
SpringApplication.run(DubboControllerApplication.class, args);
}
}
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
2021年Java中高级面试必备知识点总结
在这个部分总结了2019年到目前为止Java常见面试问题,取其面试核心编写成这份文档笔记,从中分析面试官的心理,摸清面试官的“套路”,可以说搞定90%以上的Java中高级面试没一点难度。
本节总结的内容涵盖了:消息队列、Redis缓存、分库分表、读写分离、设计高并发系统、分布式系统、高可用系统、SpringCloud微服务架构等一系列互联网主流高级技术的知识点。
目录:
(上述只是一个整体目录大纲,每个点里面都有如下所示的详细内容,从面试问题——分析面试官心理——剖析面试题——完美解答的一个过程)
部分内容:
对于每一个做技术的来说,学习是不能停止的,小编把2019年到目前为止Java的核心知识提炼出来了,无论你现在是处于什么阶段,如你所见,这份文档的内容无论是对于你找面试工作还是提升技术广度深度都是完美的。
不想被后浪淘汰的话,赶紧搞起来吧,高清完整版一共是888页,需要的话可以点赞+关注
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!
: 33%;" />
2021年Java中高级面试必备知识点总结
在这个部分总结了2019年到目前为止Java常见面试问题,取其面试核心编写成这份文档笔记,从中分析面试官的心理,摸清面试官的“套路”,可以说搞定90%以上的Java中高级面试没一点难度。
本节总结的内容涵盖了:消息队列、Redis缓存、分库分表、读写分离、设计高并发系统、分布式系统、高可用系统、SpringCloud微服务架构等一系列互联网主流高级技术的知识点。
目录:
[外链图片转存中…(img-Bzdfmg7I-1712446095324)]
(上述只是一个整体目录大纲,每个点里面都有如下所示的详细内容,从面试问题——分析面试官心理——剖析面试题——完美解答的一个过程)
[外链图片转存中…(img-8y3Jyji1-1712446095324)]
部分内容:
[外链图片转存中…(img-C7xhj4MJ-1712446095325)]
[外链图片转存中…(img-4uZLsKAa-1712446095325)]
[外链图片转存中…(img-GzIzd2ov-1712446095325)]
对于每一个做技术的来说,学习是不能停止的,小编把2019年到目前为止Java的核心知识提炼出来了,无论你现在是处于什么阶段,如你所见,这份文档的内容无论是对于你找面试工作还是提升技术广度深度都是完美的。
不想被后浪淘汰的话,赶紧搞起来吧,高清完整版一共是888页,需要的话可以点赞+关注
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!