手写SkyWalking-Agent模块(初始化、MySQL、MVC插件编写) 使用ByteBuddy类库和JavaAgent机制实现类似SkyWalking-Agent模式下的无侵入式的动态可插拔功能 准备工作 新建一个springboot程序,带有一个查询数据库的接口 由于程序简单,这里只贴出一些需要的代码 @RestController @RequestMapping("/userInfo") publicclassUserInfoController{ @Resource privateUserInfoServiceuserInfoService; @GetMapping("/li...

(目录) ※抽象Agent模块(一条指令挂载所有plugins和通用的类与方法的字节码增强框架) ※可插拔式插件加载实现要点分析 怎么做到只指定一个-javaagent参数 怎么加载多个plugin? 怎么把typeDescription和要拦截的method对应起来 怎么把typeDescription和要拦截的method的拦截器Interceptor对应起来 接下来我们依次解决这些问题,代码思路借鉴SkyWalking-Agent模块的源码 构建以下目录结构的项目↓↓ 实现只指定一个-javaagent参数,实现挂载所有jar SkyWalking源码plugins目录下有...

(目录) JavaAgent 背景 因在做到SkywalkingAgent的时候,并没有修改程序中任何一行Java代码,就可无侵入式的使用组件,便使用到了JavaAgent技术,接下来对学习学习JavaAgent技术 JavaAgent是什么 JavaAgent这个技术对大多数人来说都比较陌生,但是大家都都多多少少接触过一些。 实际上我们平时用过的很多工具都是基于javaAgent来实现的。 例如:热部署工具JRebel,springboot的热部署插件,各种线上诊断工具(btrace,greys),阿里开源的arthas等等。 javaAgent在JDK1.5以后,我们可以使用agent...

(目录) RedisCluster集群模式 Cluster模式是Redis3.0开始推出 采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接 官方要求:至少6个节点才可以保证高可用,即3主3从;扩展性强、更好做到高可用 各个节点会互相通信,采用gossip协议交换节点元数据信息 数据分散存储到各个节点上 RedisCluster集群与RedisSentinel有什么不同? 区别: 哨兵模式:每个节点持有全量数据,且数据保持一致,为系统Redis高可用 集群模式:每个节点主数据不同,是数据的子集.利用多台服务器构建集群提高超大规模数据处理能力,同时提供...

(目录) Redis哨兵(Sentinel)架构 Redis主从复制 一主多从架构 master主要负责写入,slave负责读取,有读写分离的功能 redis主从同步原理 1、slave执行命令向master建立连接2、master执行bgsave(后台存储),生成rdb快照(redis备份方式,data以二进制方式保存在本地),发送到slave上3、slave获取快照后读取,对data还原,保证初始化数据一致4、master接受命令发送到salve,salve执行保证后续数据一致 redis主从架构缺点 master挂掉,redis集群瘫痪 RedisSentinel高可...

(目录) 一、项目名称 题目:Hippo4j用户体系对接LDAP 二、项目描述/需求 Hippo4jServer模式对接IDAP统一用户认证技术框架 Hippo4jServer模式可使用IDAP相关账号进行登录操作 三、项目详细方案 1.LDAP相关概念 在开发过程中我们难免需要用到各种各样的开发工具,各个系统都有自己的一套密码,这就让我们很无奈,怎么记住呢?管理员在分配账户的时候也很头疼,团队每加入一个成员他就要在各个系统中为这个成员添加一个账户,管理起来非常麻烦。有没有一个统一管理多个系统的用户信息的东西呢?那就是LDAP LDAP的目的是为各种软件提供统一标准的认证机制,所...

  hzIe5RkCbU7L   2023年11月15日   20   0   0 OSPPLDAP开源之夏OSPPLDAP开源之夏

(目录) 对接Ldap服务疑问 1.怎么保证其他人的Ldap服务器目录与Java代码检索结构一样? 列举可能的结构: cn=hhhh,dc=xxxx,dc=xxx (唯一字段不一样)uid=hhhh,dc=xxxx,dc=xxxxx uid=hhhh,ou=xxx,dc=xxxx,dc=xxxxx 2.对接其他服务器时,怎么确保程序中的实体类与Ldap服务器中objectClass对应?如果字段匹配不上就会报错 3.Ldap和MySQL数据库中的权限管理是怎么做的?数据库中有已有权限字段 同步在Ldap中创建权限字段,存储鉴权吗? 如果是这样,去对接其他的Ldap系统中可能...

  hzIe5RkCbU7L   2023年11月15日   38   0   0 LDAPLDAP

(目录) Hippo4j用户体系对接LDAP Feature:serveraddLdapuserauthentication issue:https://github.com/opengoofy/hippo4j/pull/1392 Hippo4j接入Ldap指导 在application.properties配置文件中,配置下面相关信息: 此配置文件示例在同目录下的ldap-back.properties LdapConfig spring.ldap.urls=ldap://127.0.0.1:389 spring.ldap.base=dc=xxx,dc=com spring.ldap...

(目录) 为什么不推荐使用自增主键 递增主键的作用 我们在数据库里保存的数据就跟excel表一样,一行行似的 而在底层,这一行行数据,就是保存在一个个16k大小的页里。 每次都去遍历所有的行性能会不好,于是为了加速搜索,我们可以根据主键id,从小到大排列这些行数据,将这些数据页用双向链表的形式组织起来,再将这些页里的部分信息提取出来放到一个新的16kb的数据页里,再加入层级的概念。于是,一个个数据页就被组织起来了,成为了一棵B+树索引。 而当我们在建表sql里声明了PRIMARYKEY(id)时,mysql的innodb引擎,就会为主键id生成一个主键索引,里面就是通过B+树的形式来维护...

(目录) 多级缓存架构分析 本讲咱们探讨缓存这个话题,看在微服务环境下如何设计有效的多级缓存架构。本讲设计三⽅⾯内容: Web应⽤的客户端缓存 应⽤层静态资源缓存 服务层多级缓存 微服务架构中的多级缓存设计 提到缓存,想必每⼀位软件⼯程师都不陌⽣,它是⽬前架构设计中提⾼性能最直接的⽅式。 这⾥我们举个例⼦: 假设应⽤程序将原始数据存储在MySQL数据库中,众所周知MySQL数据库会将数据存储在硬盘以防⽌掉电丢失,但是受制于硬盘的物理设计,即便是⽬前性能最好的企业级SSD硬盘,也⽐内存的这种⾼速设备IO层⾯差⼀个数量级。 ⽽以淘宝、京东这种电商为代表的互联⽹应⽤,都是典型的“读多写...

(目录) Ribbon负载均衡 我们添加了@LoadBalanced注解,即可实现负载均衡功能,这是什么原理呢? 负载均衡原理 SpringCloud底层其实是利用了一个名为Ribbon的组件,来实现负载均衡功能的。 那么我们发出的请求明明是http://userservice/user/1,怎么变成了http://localhost:8081的呢? 源码跟踪 为什么我们只输入了service名称就可以访问了呢?之前还要获取ip和端口。 显然有人帮我们根据service名称,获取到了服务实例的ip和端口。 它就是LoadBalancerInterceptor,这个类会在对...

关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~