Dubbo

惊讶!缓存刚Put再Get居然获取不到?

蹲街弑〆低调 提交于 2020-08-10 13:57:17
最近一直在老家远程办公,微信突然响了下,有同事说遇到了一个奇怪的问题,让我帮忙看下。 现象就是标题所说的缓存获取不到的问题,我一听感觉这个问题挺有意思的,决定一探究竟。 下面给出部分代码还原下案发现场: @CreateCache(name = "demo", expire = 600) private Cache<String, ThirdPartyEventResponse> cache; @Test public void test() { ThirdPartyEventResponse eventResponse = new ThirdPartyEventResponse(); eventResponse.setTicketCategories(Arrays.asList(ticketCategoryResponse)); // 省略 ..... // 添加 cache.put(DisChannelType.PIAONIU.getValue(), eventResponse); // 获取 ThirdPartyEventResponse resp = cache.get(DisChannelType.PIAONIU.getValue()); } Put 之后马上 Get,居然获取不到值。 这就有点匪夷所思了,我们来好好排查下。 首先过期时间为 600 秒

dubbo和spring的@service注解区别

爱⌒轻易说出口 提交于 2020-08-10 11:24:54
个人观点是因为包扫描的配置不同 org.springframework.stereotype.Service是spring的注解,用于标注业务层组件(service)。 标注了的组件需要在配置文件里有这样的配置<context:component-scan base-package="这里是包名" ></context:component-scan> com.alibaba.dubbo.config.annotation.Service com.alibaba.dubbo.config.annotation.Service是dubbo用于声明provider的注解。 标注了这个注解的service需要在配置文件里添加这样的配置:<dubbo:annotation package="这里是包名" /> 不同的包扫描配置会使用不同的发布服务的方法 这里就不说明,可以去看一下其他人的博客,有详细介绍 来源: oschina 链接: https://my.oschina.net/u/4419233/blog/4286427

Dubbo服务调用隔离这么玩对么

我是研究僧i 提交于 2020-08-10 08:00:45
背景阐述 前几天,有位同学问我一个关于 Dubbo 的问题。他的诉求是这样子的: 诉求一 第一个诉求是本地开发的时候想自己调用自己的服务,比如自己在改 A 服务,然后出问题了,本地再启动一个 B 服务,A 服务调用 B 服务直接排查问题。 目前的问题是用的同一个注册中心,所以会调用到其他的服务实例。 还有就是去网上找了一些文章的资料,按照资料上的配置没有效果,也就是在@Reference 配置 url 来指定调用的服务地址。 配置如下: @Reference(url="dubbo://localhost:20880") 诉求二 目前他们的测试环境没有使用 Docker 来部署,而且每个服务只部署了一个实例。问题就是当一个项目并行开发时有多个分支,这些分支得合并后一起部署测试。经常会出现代码冲突等问题。 还有就是快要上线时,需要下掉其他的分支做回归测试。但是会出现其他团队也要同一天上线,就只能协商等待来解决。 最好的方式就是可以实现一个分支部署一个实例,对于他们目前的这个规模和投入这个暂时做不了。所以他向我请教,有没有什么更好更快的方式。 解决方案 既然找了我,我还是给出一些建议吧,不一定很好,仅供参考。 诉求一解决方案 br/>@Reference 在@Reference 中指定 url 是可以的,只是那位同学配置的地址有问题,在地址后面应该加上接口和版本的信息。

上线前一个小时,dubbo这个问题可把我折腾惨了

扶醉桌前 提交于 2020-08-10 06:51:35
前因 那是一个月黑风高的夜晚,不管有没有圆圆的月亮,都无法解救要加班的我。这就是苦涩的人生啊! 那天正好是春节回家的日子,定了晚上的票,然后还是上线的日子。 测试在做回归测试的时候,发现一个老功能报错了,什么鬼,都没改过那块代码怎么会出问题?案件疑点重重呀。。。 为了能够早点上线,早点回家,所以这个 Bug 就显得十万火急了,因为就这一个问题,其他都没问题,解决好了就可以上线了,于是开启了破案之路。 第一步:找到错误信息 机智的我在第一时间打开了 Cat 查看具体的错误,由于当时并没有想到去写一篇文章出来,错误信息也就没有截图,后面通过模拟的操作,得到了类似的一样的错误信息如下: Cat错误信息 居然是类转换错误,点进去查看详细的错误信息,如下图: Cat错误详情 真正有价值的错误信息如下: dubbo version: 2 .7 .3, current host: 192 .168 .8 .224 java .lang .ClassCastException: java .util .HashMap cannot be cast to com .cxytiandi .kittycloud .user .api .request .Address 第二步:排查报错的代码 公司代码不方便透露,下面都是模拟的代码: public ResponseData<String> login

ZooKeeper入门学习笔记

喜夏-厌秋 提交于 2020-08-10 06:26:37
ZooKeeper is a high-performance coordination service for distributed applications . It exposes common services - such as naming, configuration management, synchronization, and group services - in a simple interface so you don’t have to write them from scratch. You can use it off-the-shelf to implement consensus, group management, leader election, and presence protocols. And you can build on it for your own, specific needs. 参考资料: Apache > ZooKeeper ZooKeeper+Dubbo分布式架构基础教程 来源: oschina 链接: https://my.oschina.net/u/4406698/blog/4458814

RedisTemplate:我不背锅,是你用错了

别说谁变了你拦得住时间么 提交于 2020-08-10 06:26:26
今天分享一个 RedisTemplate 的问题,感兴趣的可以继续看下去了,不感兴趣的继续撩妹去吧! 如下图:一位朋友给了我一个报错的图片,为啥为啥取不到值? 我也有点懵,第一反应就是 RedisTemplate 和 StringRedisTemplate 会不会用的两个不同的 Connection,导致相同的 Key 一个能查到,一个不能查到。 经过反复确认,Connection 没问题,是同一个,还是那句话:每个奇怪问题的背后一定有故事。 只能调试源码了呗,还能怎么办。最后在 redis.clients.jedis.BinaryJedis#hget 中发现了问题,就是 Redis 压根就没有返回数据。 现在的问题就剩下为什么 StringRedisTemplate 的查询可以返回数据,RedisTemplate 的查询却不能返回数据? 我们来屡一下 StringRedisTemplate 和 RedisTemplate 的关系,StringRedisTemplate 继承了 RedisTemplate,是专门用于字符串操作。 RedisTemplate 一般用于比较复杂的对象操作,区别就在于序列化的不同。 于是我用 redis 客户端查看了存储的数据格式,发现这个 Hash 的格式是字符串。 这也就是为什么用 StringRedisTemplate 可以获取到

由 Apache 说开,中国开源项目已经走向世界!

霸气de小男生 提交于 2020-08-10 06:20:35
整理 | 唐小引 头图 | CSDN 下载自东方 IC 出品 | CSDN(ID:CSDNnews) 开源的蓬勃发展离不开众多中立的、非营利性质的自由和开源软件(FOSS)基金会的治理,目前全球最大的开源基金会是 Apache Software Foundation(简称 ASF,Apache 基金会),它成立于 1999 年,全球无数的开源项目均是由此兴起及壮大。 7 月 15 日,由中国开源软件推进联盟(COPU)主办,赛迪传媒、《软件和集成电路》杂志社联合承办,CSDN 独家直播的 2020 第十五届“开源中国开源世界”高峰论坛 在线上盛大召开。Apache 基金会副主席 Shane Curcuru 发表《The Apache Software Foundation: Community-Driven Global Innovation》主题演讲,深入分享了 Apache 的治理之道,以及 Apache 项目社区在中国的发展现状。 Shane Curcuru 表示,在过去的 20 年里,Apache 基金会已经从最初的 21 位创始人发展到了 800 多位 Apache 会员,项目提交数量稳步增长,现在已有近 8000 名提交者,这些 Apache 项目中的提交者已经发布了超过 2 亿行代码。 尤其值得关注的是,来自中国的新社区和贡献者加入 Apache 项目的速度增长惊人

Arthas 征文活动火热进行中,cherry 键盘等你来拿!(内附第三期中奖名单)

空扰寡人 提交于 2020-08-10 02:22:37
为了让更多开发者开始用上 Arthas 这个Java 诊断神器,3 月 26 日,我们联合 JetBrains 推出第一期 Arthas 有奖征文活动 : 聊聊这些年你和 Arthas 之间的那些事儿 。 一石激起千层浪,在前三期活动期间我们得到了众多开发者的积极响应,闻讯赶来投稿的同学络绎不绝,截止到现在,第三期征文活动已结束,经过层层挑选与评估,以下为第三期征文活动的获奖情况: 汪小哥 冯富杰 奖品说明 :以上同学将在 Arthas Most Valuable User 福袋(包含淘公仔、Arthas 贴纸、JetBrains 周边礼包)的基础上另送出蓝牙音响一台; 注:所有礼品将于开奖后 7 个工作日内发出,请耐心等待! 推荐使用 Arthas 方式一: 推荐使用 IDEA 插件下载 Cloud Toolkit 来使用 Arthas Cloud Toolkit 是阿里云发布的免费本地 IDE 插件,帮助开发者更高效地开发、测试、诊断并部署应用。通过插件,可以将本地应用一键部署到任意服务器,甚至云端(ECS、EDAS、ACK、ACR 和 小程序云等);并且还内置了 Arthas 诊断、Dubbo工具、Terminal 终端、文件上传、函数计算 和 MySQL 执行器等工具。不仅仅有 IntelliJ IDEA 主流版本,还有 Eclipse、Pycharm、Maven

面试2个月,终于收到满意的Java后端开发offer!不用愁眉苦脸了

本小妞迷上赌 提交于 2020-08-10 02:10:11
毕业到现在也近两年了,最近面试了阿里集团(菜鸟网络,蚂蚁金服),网易,滴滴,点我达,最终收到点我达,网易offer,蚂蚁金服二面挂掉,菜鸟网络一个月了还在流程中... 最终有幸去了网易。 但是要特别感谢点我达的领导及HR,真的非常非常好,很感谢他们一直的关照和指导。 面试整体事项 1 简历要准备好,联系方式一定要正确清晰醒目,项目经历按照时间倒序阐述,注意描述自己在项目中承担的职责,简历的模板尽量选择简洁的,毕竟程序员大部分还是喜欢简单明了的。 2 推荐boss直聘,我觉得很好用(不是广告)。 3 一般的整体面试流程都是电面->现场面->HR面->等着。 4 不要觉得HR说让你回去等消息就是GG了,他们也要跟你之前的面试官讨论,再向领导汇报,如果说不急可能还要和其他候选人比较,所以HR让你回去等消息绝对不是说明你完蛋了。 5 面试前准备好自我介绍,1分钟左右就可以,可以写在纸上,电面可以照着念,等你到了现场面了基本也都快背下来你的自我介绍了。 6 准备好扎实的基础,这是一切的根源,没实力怎么都没用的。 7 面试中你可以把你的面试官往你会的知识上引导(我遇到过你会什么他不问什么的)。 8 遇到了设计类题目不要着急,面试官不是为了让你几分钟设计一个高并发高可用设计模式完美的架构,只是想看看你的思路,看看你应变的能力,然后给你些提示看看你能否迅速的调整。 9 offer都会有的,不要着急

记录一次 Arthas 使用

谁都会走 提交于 2020-08-09 22:44:58
【Arthas 官方社区正在举行征文活动,参加即有奖品拿~ 点击投稿 】 前言 疫情期间,在家办公,每天都是 007,感觉自己已经升级为熊猫特工了,心累,身体疲惫!!! 今天终于有时间休息一下,然后记录一下在家办公期间 Arthas 的简单使用。 下载安装 方式一: 推荐使用 IDEA 插件下载 Cloud Toolkit 来使用 Arthas Cloud Toolkit 是阿里云发布的免费本地 IDE 插件,帮助开发者更高效地开发、测试、诊断并部署应用。通过插件,可以将本地应用一键部署到任意服务器,甚至云端(ECS、EDAS、ACK、ACR 和 小程序云等);并且还内置了 Arthas 诊断、Dubbo工具、Terminal 终端、文件上传、函数计算 和 MySQL 执行器等工具。不仅仅有 IntelliJ IDEA 主流版本,还有 Eclipse、Pycharm、Maven 等其他版本。 方式二: 直接下载 启动:java -jar arthas-boot.jar 这里需要重点说明一下:必须使用和目标进程相同的用户,否则启动不成功。 问题背景 本人前天刚上线一个任务。由于某产品手误,误操作了线上数据,要求帮忙把数据删除了。 这尼玛的真坑啊,明显是坑老子。 还好有先见之明,没次做任务的时候多多少少都会写几个后门工具( 不是为了删库跑路,而是这些后门在特定情况下真能应急使用