dubbo初学采坑记
写在前面的话
- dubbo 现在是apache组织旗下的项目,相信国内也有很多人使用。最近一个同事离职,我就接手了他的项目。远程通讯就是用的dubbo框架来实现的。使用Intelij idea 写了一个maven和spring-boot的Demo,代码放在最后。
其实学习一个知识点最好的地方就是官网。但是官网有点穷举的意思,不能每次学习都去读一遍,所以这里记录一下如何使用的问题,官网可以用作一个词典之类的工具。
介绍
- dubbo 这是一个分布式框架,主要为了解决单点服务器带来的压力和性能以及难以维护的问题
dubbo的优点就是基本分布式的全部优点,并且因为注册中心的加弛让框架有了更好的连通性和健壮性和伸缩性,也可以实现灰度发布
架构
实操
- 我们可以发现服务发布和消费都是通过注册中心来连接的,官文上也说了,可以不要注册中心采用直连的方式的。官方推荐的是zookeeper,我们项目中也是用的zookeeper所以,我们第一步就是开启zookeeper服务
我们可以在这里下载
https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/
记得使用的端口。 - 新建一个工程 api 主要提供服务发布者和消费者共用的接口
- 服务发布者添加对应的配置文件并依赖api工程
intellij idea 添加不同的模块依赖可以参考一个博文,以及配置文件会自动导入命名空间,不要手动导入配一堆。反而不好用。 消费者同样添加对api工程的引用和项目文件
基本上就可以通信了,源码可以到github上去找到采坑
- 第一次用接手的代码乱。发现没有zookeeper也可以启动,但是不能实现RPC,原因是check并了,没有进行检查
- 一定要看好dubbo的jar包依赖,这的很不好搞,花了很长的时间。不可大意
- 注意配置文件的优先级 消费者>发布者>全局
方法级别配置优于接口级别
源码
https://github.com/Ants-double/BlogCode/tree/master/java
dubbo初学采坑记的更多相关文章
- 分布式改造剧集之Redis缓存采坑记
Redis缓存采坑记 前言 这个其实应该属于分布式改造剧集中的一集(第一集见前面博客:http://www.cnblogs.com/Kidezyq/p/8748961.html),本来按照顺序 ...
- Spring Cloud Config采坑记
1. Spring Cloud Config采坑记 1.1. 问题 在本地运行没问题,本地客户端服务能连上本地服务端服务,可一旦上线,发现本地连不上线上的服务 服务端添加security登录加密,客户 ...
- k8s采坑记 - 解决二进制安装环境下证书过期问题
前言 上一篇k8s采坑记 - 证书过期之kubeadm重新生成证书阐述了如何使用kubeadm解决k8s证书过期问题. 本篇阐述使用二进制安装的kubernetes环境,如何升级过期证书? k8s配置 ...
- Redis适配采坑记
Redis适配采坑记 相对于其他的适配,Redis可以说是非常简单的其中只发现一个坑 问题一: 问题描述: redis认证失败 问题详解: redis连接配置时,本地需要采用password属性,远程 ...
- tk.mybatis通用工具采坑记
tk.mybatis通用工具pom <!--mybatis依赖--> <dependency> <groupId>org.mybatis.spring.boot&l ...
- Service worker (@nuxtjs/workbox) 采坑记
PWA(Progressive Web App)是前端的大趋势,它能极大的加快前端页面的加载速度,得到近乎原生 app 的展示效果(其实难说).PWA 其实是多种前端技术的组合,其中最重要的一个技术就 ...
- aidl使用采坑记
什么是AIDL? AIDL是 Android Interface definition language的缩写,它是一种Android内部进程通信接口的描述语言,通过它我们可以定义进程间的通信接口 A ...
- css选择器:first-child和nth-child 采坑记
今天想用nth-child来给一个类似于树的目录(bootstrap-nav-tree 一个angularjs插件)设置不同的颜色,结构大致类似于 <ul> <li class=& ...
- 使用wepy框架搭建微信小程序采坑记(一)
1.什么是wepy 这个框架是腾讯内部出的一个类MVVM的小程序开发框架.大体上来说语法是类VUE的,所以如果有VUE开发经验的话迁移成本会低一些.至于具体的怎么使用我就不赘言了,有问题查文档(官方文 ...
随机推荐
- 03爬虫-requests模块基础(1)
requests模块基础 什么是requests模块 requests模块是python中原生基于网络模拟浏览器发送请求模块.功能强大,用法简洁高效. 为什么要是用requests模块 用以前的url ...
- 【linux】记录一个yum update和upgrade的区别
yum update 更新软件包和系统软件.系统内核 yum upgrade只更新软件包,不更新系统软件和系统内核 查看版本号 [root@localhost ~]# uname -r 3.10.0- ...
- Wordpress SEO
Wordpress SEO 安装插件 Baidu Sitemap Generator, 作者 柳城, 主要用于按照配置参数生成 sitemap.xml 网站地图. 设置路径 设置 => Baid ...
- JAVA线程基础概念及使用
一.线程和进程的区别 在操作系统中所有运行的任务通常对应一个进程,进程是系统进行资源分配和调度的一个独立单位.线程是进程的组成部分,一个进程最少包含一个线程.并发和并行的区别是,并发指的在同一时刻内, ...
- Julia初学备忘
println("hello!") println("hello!") print("hello!") print("hello! ...
- cp -rf 操作时依然会提示覆盖
在linux上经常会使用cp -rf命令,该命令就是强制覆盖指定目录下的文件,但有时使用该命令依然会提示是否覆盖,cp命令的参数有如下一些: 参数说明: -a:此选项通常在复制目录时使用,它保留链接. ...
- 树上数据结构——LCT
目录 树上数据结构--LCT 概述 基本概念 核心操作 其他操作 完整模板 树上数据结构--LCT 概述 LCT是一种强力的树上数据结构,支持以下操作: 链上求和 链上求最值 链上修改 子树修改 子树 ...
- java第3天:Scanner,Random,ArrayList
第一章:Scanner从入门到放弃 1 API的概述和使用步骤 API简称应用程序编程接口,是JDK给我们提供好的可以直接使用的类和方法,是程序员随手使用的字典. *** 2 Scanner的概述 2 ...
- LitePal的聚合函数
传统的聚合函数用法 虽说是聚合函数,但它的用法其实和传统的查询还是差不多的,即仍然使用的是select语句.但是在select语句当中我们通常不会再去指定列名,而是将需要统计的列名传入到聚合函数当 ...
- spring boot参数验证
必须要知道 简述 JSR303/JSR-349,hibernate validation,spring validation 之间的关系 JSR303 是一项标准,JSR-349 是其的升级版本,添加 ...