如何打造一个Dubbo网关--文档生成
上文我们分析了Maven插件作用,并知道了如何配置插件的各种参数,插件将完成如下几个目标:
- 使用
Visitor
遍历并记录AST - 实现
isCompress
和makeJson
功能 - 按接口保存文件并存在于最终生成的client-jar中
- 生成所有文件的索引和版本信息,这部分同样要在client-jar中
本篇内容主要讲述ASTNode和ASTVisitor,由于代码量较大只会挑部分说明。以下代码片段全部来自于plume
上文我们分析了Maven插件作用,并知道了如何配置插件的各种参数,插件将完成如下几个目标:
Visitor
遍历并记录ASTisCompress
和makeJson
功能本篇内容主要讲述ASTNode和ASTVisitor,由于代码量较大只会挑部分说明。以下代码片段全部来自于plume
文档做为前后端联调的核心是不可或缺的,一个好的文档能降低大量沟通成本
对于Swagger
我们也使用过好几年了,调试还可以但是做为联调文档仍然不是那么方便。所以把目标放在了每个Javaer都必须写的一样东西上了:方法注释
对!我们要通过接口的注释来生成API文档,看上去和javadoc有点像,思路也确实来自于javadoc,但是有以下几个问题:
@Whitelist
和Injection
本篇内容主要讲述JDT和Maven插件。以下代码片段全部来自于plume
之前也说过微服务架构下,我们通常会收获数个甚至更多的子项目,每个项目独立运行。但是用户还需要登录啊,每个子系统也要获取登录之后用户信息
将登录凭证在子系统中传递,交由子系统单独认证并不是什么好主意:不仅会增加开发复杂度,同时会增加认证服务的压力,还会造成大量浪费。子系统需要的仅仅是用户当前信息的快照
如果某个接口需要用户登录,但是登录凭证失效了、不存在或错误应该在网关直接返回。本篇内容主要讲述注入注解和用户注入。以下代码片段全部来自于plume
微服务架构下,一个完整的业务通常是被拆分成数个甚至数十个子项目,每个子项目独立运行,一组人员负责一个或数个子项目
在这种情况下并行开发不可避免,我们假设这么一种情况:red组要做一个需求评估需要改动A、B、C三个项目;blue组也要做一个需求评估需要改动B、C、D三个项目;yellow组也要做一个需求评估需要改动E、F这两个项目。这种情况下B、C项目的发布权限给谁?又如何保证E、F能调用到正确的A、B、C、D的接口呢?
在软分组下,流量进入网关后如果无分组标记则走stable分组,否则按分组标记走。本篇内容主要讲述SPI扩展和网关软分组。以下代码片段全部来自于plume
我们的网关是基于SpringCloudGateway
实现,显然不可能在网关项目中引入所有业务项目的client.jar,更不可能在client.jar变化时重启网关,那要如何实现rpc调用呢?这里就要引入一个Dubbo
里的重要功能:泛化调用
所谓的泛化调用就是在调用方没有接口及模型类元的情况,通过已知条件直接构造出接口相关引用来实现rpc调用的一种手段。网关通过泛化调用将内部的Dubbo
接口转换成rest形式给前端使用
通过泛化调用可以在不依赖jar的情况下进行rpc调用,本篇内容主要讲述泛化调用和接口路由转换。以下代码片段全部来自于plume
Dubbo
和SpringCloud
有什么优缺点?应该如何选型?这里简单对比下:
SpringCloud
必须在SpringBoot
上运行,提供了一套完整的工具链,包括微服务开发中的方方面面Dubbo
与Spring
容器集成,只包括服务治理和rpcSpringCloud
虽然说开箱即用,但是仍然会引入一些必须理解的组件和额外代码SpringCloud
的服务端本质上就是一个运行起来的Spring
容器,对外提供rest(http+json)服务Dubbo
的服务端是一个单独的NettyServer
,默认使用dubbo协议和单一tcpDubbo
提供了一套自己的SPI
机制可以方便的对常用功能进行扩展当然两者也不是对立的可以同时使用,毕竟最常见的还是将Dubbo
和SpringBoot
部署在一起,这其实和SpringCloud
部署在一起没有本质区别
有的网站内容很喜欢,但想要一个本地能无障碍访问的镜像怎么办?当然是wget
啊
之前使用的如下,但是文件已存在的时候会出现各种问题,导致每次基本都要重下,对于一个有着巨量图片的站点实在是太难了
wget -r -c -p -np -nc -k -e robots=off -U=Mozilla -P /data/site -N http://$1
Webmagic
默认不是干这个的,它是把页面内容抽取成结构化数据存储而不是直接把页面保存完事;不过看下文档也就是重写下PageProcessor和Pipeline的事;依然图样,保存图片还是需要开了线程池去下载
当然这样虽然减少了图片的重复下载,但并没有简单多少,以下仅作为一个记录,因为这个方案很快就放弃了
辣鸡游戏毁我青春废我钱财颓我精神,我不做骑空士了!JOJO(🐶
为了流程控制下面会看到乱七八糟的Observer
、Promise
和让人无语的跳转这些我都没这篇里写
为啥不用await和async!!!
大清亡了,PSV居然在一个月前已破解了。现在破解已经比较成熟了,可以模拟最新版登录PSS,大多数游戏也都有dump了
不过怎么看都是药丸;大概不会有新游戏来,不过早就吃灰多年,半死不活了;高性能的手机模拟器啥时候来
随着SpringBoot
的流行,Web应用的打包方式也终于不再只是Tomcat+war
了。实际项目中应该没人用Dropwizard吧
目前来看常用的构建工具是Maven
或Gradle
,打包成war或jar,当然是针对SpringBoot项目