• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

polymeric: 提供跨微服务数据聚合优雅高效的实现

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

polymeric

开源软件地址:

https://gitee.com/youpiao_admin/polymeric

开源软件介绍:

polymeric

介绍

polymeric 是一个在DDD实施微服务下跨库跨表的数据聚合实现,使用声明式配置将需要跨库跨表的字段,自动匹配远程数据源,规避良莠不一的聚合方式,降低代码量,polymeric结合mybatis查询结果的前置下,实现远程数据查询并反写到 mybatis 的查询结果中, 提供自由实现分页没有任何侵入,实现了轻松跨库,跨表,代码干净清爽并存的解决方案,也是DDD领域驱动思想指导完成微服务设计后各个微服务实现独立自治数据反写的优选方案。

使用说明

  1. 引入 polymeric-spring-boot-starter
    <dependency>            <groupId>com.cdg.polymeric</groupId>            <artifactId>polymeric-spring-boot-starter</artifactId>            <version>2.0.0-SNAPSHOT</version>    </dependency>
  1. 在spring boot 工程中 根据自己实际需要增加缓存配置
    ploymeric:      enabled: true #默认开启      guavaCacheNumMaxSize: 1000 #guava缓存的键值数      guavaCacheRefreshWriteTime: 10 #guava更新缓存的下一次时间,分钟      guavaCacheRefreshThreadPoolSize: 10 #guava刷新线程池线程数量
  1. 在需要跨库跨表的字段或者vo上增加声明式注解配置,比如案例如下
第一种使用方式:
聚合服务方: 
    @Polymeric(key = "id",args = Long.class,feign = BasicDataFeignClientService.class,method = "getCustomerNameById")    public class CustomerVo {      private Long id;      @PolymericValue(name = "customerName",enableCache = true)      private String customerName;      private String address;      private String phone;}
远程数据源:
    @GetMapping(value = "/getCustomerNameById")    @ApiOperation(value = "测试聚合组件")    public Map getCustomerNameById(@RequestParam(name = "id") Long id) {        Map result = new HashMap();        result.put("customerName","wyp");        return result;    }
@Polymerickey: 远程数据源需要查询的参数args: 远程数据源的参数类型feign:支持openfeign 的feign客户端method: feign客户端下调用的方法名@PolymericValuename:远程数据源需要聚合的字段名称enableCache: 是否开启缓存

注:这里是调用一次远程数据源反写多个字段,比较适合一个vo中多个字段需要跨库跨表查询的场景,当所有字段都开启了缓存,才会走一级缓存,否则至多查询一次远程数据源。

第二种使用方式:
聚合服务方:
public class CustomerVo {                private Long id;                @PolymericFiled(key = "id",args = Long.class,feign = BasicDataFeignClientService.class,method = "getCustomerNameById",enableCache = true)        private String customerName;                private String address;                        private String phone;                      }

也可以将查询配置在字段上,此场景比较适合vo至多有一个需要查询的字段,否在推荐使用 @Polymeric

@PolymericFiledkey: 远程数据源需要查询的参数args: 远程数据源的参数类型feign:支持openfeign 的feign客户端method: feign客户端下调用的方法名

参与贡献

  1. Fork 本仓库
  2. 新建 Feat_dev 分支
  3. 提交代码
  4. 新建 Pull Request

spring boot 的支持

对spring boot 的支持见 https://gitee.com/youpiao_admin/polymeric-spring-boot


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap