Giter Site home page Giter Site logo

sermant-io / sermant Goto Github PK

View Code? Open in Web Editor NEW
1.1K 1.1K 145.0 39.96 MB

A Cloud-Native Proxyless Service Mesh based on Java Bytecode Enhancement Technology

Home Page: https://sermant.io/

License: Apache License 2.0

Java 98.95% Dockerfile 0.01% HTML 0.01% Shell 0.12% FreeMarker 0.04% Batchfile 0.01% Vue 0.49% TypeScript 0.04% SCSS 0.02% Python 0.10% C 0.21%
cloud-native dubbo javaagent sermant service-mesh springcloud

sermant's People

Contributors

beetle-man avatar chengyouling avatar daizhenyu avatar develpoerx avatar fuziye01 avatar glovethu avatar hanbingleixue avatar hapthorin avatar joeminty avatar justforstudy-a avatar kkf1 avatar lilai23 avatar linzdbu avatar luanwenfei-venus avatar provenceee avatar robotljw avatar scyiwei avatar sherlockhan avatar tangledaily avatar useless223 avatar willemjiang avatar xuezechao1 avatar yangyshdan avatar zhongleijd avatar zwmagic avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sermant's Issues

【BUG】统一配置中,使用同一个键解释其值时发生死循环

【bug描述】 统一配置中,使用同一个键解释其值时发生死循环

【复现步骤】 在配置文件中添加形如 config.key=prefix.${config.key}.suffix 的配置,且需要读取时发生

【期望结果】 如果用户使用同一个键解释其值,应当抛出异常中断程序

【环境信息】 HuaweiJDK1.8

【其他信息】 此种配置方式正常来说都是不允许发生的,应当抛出异常警告用户,而不是等到栈溢出

【BUG】启动类增强模板类的主要流程无法执行

【bug描述】 启动类增强模板类的主要流程无法执行

【复现步骤】 尝试增强启动类的静态或示例方法

【期望结果】 能正常增强启动类的静态或示例方法

【环境信息】 HuaweiJDK1.8

【其他信息】 对Advice.OnDefaultValue的注释理解错误导致

【BUG】启动类加载器加载的类无法被增强

【bug描述】 启动类加载器加载的类无法被增强

【复现步骤】 尝试增强启动类加载器加载的类

【期望结果】 启动类加载器加载的类可以被增强

【环境信息】 HuaweiJDK1.8

【其他信息】 无

【功能】灰度发布功能迁移

【需求描述】 应用调用支持灰度调用,可根据用户配置的标签规则进行请求路由

【其他】目前合入包含路由Server功能与dubbo框架,不包含Spring

框架问题

问题

框架心跳与apm心跳糅合在一起

  • 问题:
    apm心跳任务需要经过认证,即向apm.config文件中配置的华为云apm节点发送post请求,验证配置是否正确。而框架的心跳则不需要经过认证这一步骤。
  • 解决方案:
    将框架心跳提到认证之外,代码改动量为个位行数。

apm监控数据发送采用websocket,框架统一消息发送采用netty开发

  • 问题:
    框架统一消息发送后端nettyclient存在重复造轮子情况,而且没有复用apm数据发送模块。
  • 解决方案:
    (1)可以保留采用netty框架发送数据的模式,不过根据奕哥@yangyshdan的意思应该采用更上层的框架来实现
    (2)在apm.config添加自己的webserver地址,数据入库的操作放在server端处理,在需要发送数据的插件中获取apm socketClient进行数据发送。

目录结构初步设想

  • javamesh-agentcore-bootstrap
  • javamesh-agentcore-core
  • javamesh-agentcore-core-ext
  • javamesh-agentcore-premain
  • javamesh-packaging
  • javamesh-sample-service
    • flowcontrol
      • plugins
      • service
    • apm
      • plugins
      • service
    • flowreply
      • plugins
      • service

【功能】新类隔离机制

【需求描述】 类隔离机制调整

【解决方案】 使插件和服务分离,服务使用自定义类加载器加载,实现插件功能在类加载器级别的隔离

【其他信息】 无

【BUG】com.huawei.apm.premain.Transformer#getMethodsToBeEnhanced缺少类型判断

【bug描述】com.huawei.apm.premain.Transformer#getMethodsToBeEnhanced缺少类型判断

【复现步骤】同一个被增强类中存在构造函数、实例方法和静态方法中任意两种增强点的情况下,如果增强时尝试匹配任意构造函数、任意实例方法或任意静态方法,则出现类型转换错误的问题。

【期望结果】同一个被增强类中存在构造函数、实例方法和静态方法中任意两种增强点的情况下,如果增强时尝试匹配任意构造函数、任意实例方法或任意静态方法,能正常增强

【环境信息】测试环境windows本地测试,jdk版本为HuaweiJDK1.8

【其他信息】bug分析如下:
1. bug出现原因:究其原因,是因为构建builder时,使用增强点的matcher来匹配被增强类的方法,但是没有判断类型,如果存在同名的实例方法和静态方法(namedMatch)或使用任意匹配(any),就会发生错误匹配。
2. bug修复方式:在com.huawei.apm.premain.Transformer#getMethodsToBeEnhanced方法中,增加类型判断

【BUG】工程结构改动涉及的一些问题需要后续修复

【bug描述】 1.readme文件中超链接失效;2.主要打包流程中不涉及清理和打产品包;3.打包过程中工程的上级目录会出现错误的文件

【复现步骤】 1.点击readme文件超链接;2.3.不特定设置profile的情况下执行打包命令

【期望结果】 1.超链接生效;2.默认情况下执行清理和打产品包;3.打包过程中不产生多余文件

【环境信息】 huawei jdk1.8

【其他信息】 不涉及

【BUG】后端模块和流控部分的包名和模块名需要调整,流控后端的输出需要修改

【bug描述】 工程结构改变后,后端模块和流控部分的包名和模块名没有调整,流控后端的输出没有定制化调整,后端模块使用shade插件打包而不是spring打包插件打包

【复现步骤】 执行后端的打包(-Pbackend)

【期望结果】 后端模块和流控部分包名和模块名与整体项目保持一致,流控后端定制化输出到backends目录,javamesh后端使用spring插件打包

【环境信息】 HuaweiJDK1.8

【其他信息】 不涉及

【BUG】com.huawei.apm.premain.Transformer#enhanceConstructor中Builder的匹配错误

【bug描述】 com.huawei.apm.premain.Transformer#enhanceConstructor中Builder的匹配错误

【复现步骤】 apm(非luban)的方式尝试增强构造函数,结果无法增强

【期望结果】 apm(非luban)的方式尝试增强构造函数,可正常增强

【环境信息】 本地windows测试,JDK版本为HuaweiJDK1.8

【其他信息】 bug分析如下:
1. bug出现原因:com.huawei.apm.premain.Transformer#enhanceConstructor方法中错误地调用net.bytebuddy.dynamic.DynamicType.Builder#method,而不是net.bytebuddy.dynamic.DynamicType.Builder#constructor
2. bug修复方式:将com.huawei.apm.premain.Transformer#enhanceConstructor方法中对net.bytebuddy.dynamic.DynamicType.Builder#method方法的调用修改为net.bytebuddy.dynamic.DynamicType.Builder#constructor

【BUG】多次调用method导致增强覆盖

【bug描述】 多次调用method导致增强覆盖

【复现步骤】 编写一个luban插件和新插件,同时增强同一个方法,新插件的增强会吧luban的增强覆盖

【期望结果】 两种增强可以共存

【环境信息】 HuaweiJDK1.8

【其他信息】 无

【BUG】兼容luban插件进行构造函数匹配时,没有进行参数类型校验

【bug描述】 兼容luban插件进行构造函数匹配时,没有进行参数类型校验

【复现步骤】 编写一个luban的插件,对拥有复数个构造函数的类中的一个构造函数进行增强,结果所有构造函数都增强了

【期望结果】 luban插件中,对拥有复数个构造函数的类中的一个构造函数进行增强时,仅相应的构造函数被增强,其他无影响

【环境信息】 HuaweiJDK1.8

【其他信息】 无

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.