如何打造一个Dubbo网关--文档插件

文档做为前后端联调的核心是不可或缺的,一个好的文档能降低大量沟通成本

对于Swagger我们也使用过好几年了,调试还可以但是做为联调文档仍然不是那么方便。所以把目标放在了每个Javaer都必须写的一样东西上了:方法注释

对!我们要通过接口的注释来生成API文档,看上去和javadoc有点像,思路也确实来自于javadoc,但是有以下几个问题:

  1. 不支持自定义的注解,如上文提到过的@WhitelistInjection
  2. 对于展示:方法和类在一起,方法和引用的实体是分开的,查看很麻烦
  3. 一般API文档的大致包括这几个:接口说明、入参列表、返回列表。不能说没有,只能说很分散
  4. 生成的文件再次处理很麻烦,展示可以,不能提供给网关使用

本篇内容主要讲述JDTMaven插件。以下代码片段全部来自于plume

如何打造一个Dubbo网关--用户注入

之前也说过微服务架构下,我们通常会收获数个甚至更多的子项目,每个项目独立运行。但是用户还需要登录啊,每个子系统也要获取登录之后用户信息

将登录凭证在子系统中传递,交由子系统单独认证并不是什么好主意:不仅会增加开发复杂度,同时会增加认证服务的压力,还会造成大量浪费。子系统需要的仅仅是用户当前信息的快照

如果某个接口需要用户登录,但是登录凭证失效了、不存在或错误应该在网关直接返回。本篇内容主要讲述注入注解用户注入。以下代码片段全部来自于plume

如何打造一个Dubbo网关--软分组

微服务架构下,一个完整的业务通常是被拆分成数个甚至数十个子项目,每个子项目独立运行,一组人员负责一个或数个子项目

在这种情况下并行开发不可避免,我们假设这么一种情况:red组要做一个需求评估需要改动A、B、C三个项目;blue组也要做一个需求评估需要改动B、C、D三个项目;yellow组也要做一个需求评估需要改动E、F这两个项目。这种情况下B、C项目的发布权限给谁?又如何保证E、F能调用到正确的A、B、C、D的接口呢?

  • 硬分组:所有资源物理隔离,也就是说开多个完整的dev环境,成本太高多数情况下都是不能接受的
  • 软分组:将开发环境进行逻辑分组,完整的dev环境默认是stable分组,再添加red、blue、yellow三个分组,只包含各自要开发的项目

在软分组下,流量进入网关后如果无分组标记则走stable分组,否则按分组标记走。本篇内容主要讲述SPI扩展网关软分组。以下代码片段全部来自于plume

如何打造一个Dubbo网关--泛化调用

我们的网关是基于SpringCloudGateway实现,显然不可能在网关项目中引入所有业务项目的client.jar,更不可能在client.jar变化时重启网关,那要如何实现rpc调用呢?这里就要引入一个Dubbo里的重要功能:泛化调用

所谓的泛化调用就是在调用方没有接口及模型类元的情况,通过已知条件直接构造出接口相关引用来实现rpc调用的一种手段。网关通过泛化调用将内部的Dubbo接口转换成rest形式给前端使用

通过泛化调用可以在不依赖jar的情况下进行rpc调用,本篇内容主要讲述泛化调用接口路由转换。以下代码片段全部来自于plume

如何打造一个Dubbo网关--选型

DubboSpringCloud有什么优缺点?应该如何选型?这里简单对比下:

  • SpringCloud必须在SpringBoot上运行,提供了一套完整的工具链,包括微服务开发中的方方面面
  • DubboSpring容器集成,只包括服务治理和rpc
  • SpringCloud虽然说开箱即用,但是仍然会引入一些必须理解的组件和额外代码
  • SpringCloud的服务端本质上就是一个运行起来的Spring容器,对外提供rest(http+json)服务
  • Dubbo的服务端是一个单独的NettyServer,默认使用dubbo协议和单一tcp
  • Dubbo提供了一套自己的SPI机制可以方便的对常用功能进行扩展

当然两者也不是对立的可以同时使用,毕竟最常见的还是将DubboSpringBoot部署在一起,这其实和SpringCloud部署在一起没有本质区别

Webmagic备份站点静态镜像

有的网站内容很喜欢,但想要一个本地能无障碍访问的镜像怎么办?当然是wget

之前使用的如下,但是文件已存在的时候会出现各种问题,导致每次基本都要重下,对于一个有着巨量图片的站点实在是太难了

wget -r -c -p -np -nc -k -e robots=off -U=Mozilla -P /data/site -N http://$1

Webmagic默认不是干这个的,它是把页面内容抽取成结构化数据存储而不是直接把页面保存完事;不过看下文档也就是重写下PageProcessor和Pipeline的事;依然图样,保存图片还是需要开了线程池去下载

当然这样虽然减少了图片的重复下载,但并没有简单多少,以下仅作为一个记录,因为这个方案很快就放弃了

PSV破解了?这是药丸

大清亡了,PSV居然在一个月前已破解了。现在破解已经比较成熟了,可以模拟最新版登录PSS,大多数游戏也都有dump了

不过怎么看都是药丸;大概不会有新游戏来,不过早就吃灰多年,半死不活了;高性能的手机模拟器啥时候来

如何抄作业--简单逆向说明

辣鸡游戏毁我青春废我钱财颓我精神,我不做Master了!JOJO(🐶

偶然看到的新手教程,如果没有一点基础建议细看,如果没有巨硬的sdk可以从里边下载ilasm & ildasm

以下是针对某游展开的在新版本上开启自带的自动战斗的超简略逆向破解教程,还有作业是抄y大的