Skip to content

feiqing/jbox

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Jbox 工具集合

2.2.0


executor: 并发组件

组件 描述&内容
AsyncJobExecutor 批量任务并发执行&等待框架
ExecutorsManager java.util.concurrent.Executors线程池扩展:
分组group内线程池单例, 防止建线程池循环创建
线程以'${group}-${number}'形式命名, 使线程栈查看更加清晰
开放newFixedMinMaxThreadPool()方法, 提供比Executors更灵活, 比ThreadPoolExecutor更便捷的配置方式
提供com.github.jbox.executor.policy线程拒绝策略, 在Task-Queue满时打印日志
自动将org.slf4j.MDC数据copy到子线程context, 并在子线程执行结束时自动清理
ExecutorMonitor 监控:打印线程池监控信息到Logger:com.github.jbox.executor.ExecutorMonitor下:
Group相关: 'active count'、'core pool size'、'pool size'、'max pool size'
TaskInvoke相关: 'success count'、'failure count'、'avg rt'、'avg tps'
TaskQueue相关: 'queue size'、'remaining queue size'
TopN阻塞Task相关: 'taskInfo()'、'task hash'

  • 最佳示例

配置

<bean class="com.github.jbox.rpc.akka.RpcServer"/>
<bean class="com.github.jbox.rpc.akka.RpcClient">
    <property name="readTimeout" value="200"/>
</bean>

client调用

调用方式: client.proxy("${server-ip}", ${server-service}.class).${service-method}(${params})

akka额外提供asyncProxy高性能异步调用, 详见: com.github.jbox.rpc.akka.RpcClient


强制对复杂业务逻辑解耦, 保障业务流程清晰流畅, 每一个Task与整体任务在框架层面进行监控, 保障任务串正确执行

  • 最佳示例

配置

<bean id="ipoTraceAspect" class="com.github.jbox.trace.TraceLauncher">
    <property name="tasks">
        <list>
            <bean class="com.github.jbox.trace.tasks.EagleEyeTask"/>
            <bean class="com.github.jbox.trace.tasks.ArgValidateTask"/>
            <bean class="com.github.jbox.trace.tasks.LogRootErrorTask"/>
            <bean class="com.github.jbox.trace.tasks.MethodInvokeTask"/>
        </list>
    </property>
</bean>

实现


组件 描述
SequenceDAO 分布式高性能SequenceID生成(已自动融合进insertupsert等方法)
TdmlTableFactory Mongo分表, 基于MDC context
TdmlDbFactory Mongo分库, Proxy模式, 业务0侵入, 方便配置
MongoBatis ORM
insert自动添加gmt_creategmt_modified_id(long)属性
update自动更新gmt_modified属性为当前系统时间
findupdateremove等以的Map<String, Object>作为查询更新参数, 屏蔽Mongo特殊的语法
findById、分页findupdateByIdremoveByIddistinct等helper方法
  • 详见: com.github.jbox.oplog.OplogTailStarter

  • 详见: com.github.jbox.hbase.HBaseBatis

  • 主控器: com.github.jbox.trace.TraceLauncher

  • spi

    • 可执行节点: com.github.jbox.trace.InvokerNode
    • 节点环境 : com.github.jbox.trace.NodeContext
  • 支持

    • 方法参数校验: com.github.jbox.trace.nodes.ArgsValidateInvokerNode
    • 运行耗时监控: com.github.jbox.trace.nodes.ElapsedLogInvokerNode
    • 运行出错日志: com.github.jbox.trace.nodes.LogRootErrorInvokerNode
    • 方法执行兜底: com.github.jbox.trace.nodes.MethodInvokeInvokerNode
    • 淘宝鹰眼监控: com.github.jbox.trace.nodes.EagleEyeInvokerNode
    • 淘宝哨兵限流: com.github.jbox.trace.nodes.SentinelInvokerNode
    • 统一日志打印: com.github.jbox.trace.nodes.TlogInvokerNode(目前支持xml-SpEL日志配置)
    默认占位符 desc
    start time 方法执行开始时间
    invoke thread 方法执行线程
    rt 方法执行耗时
    class name 方法所属类名
    method name 方法名
    args 入参
    result 返回值
    exception 方法执行抛出异常
    server ip 所属机器IP
    trace id EagleEye TraceId
    client name 调用方name
    client ip 调用方IP

class 描述
com.github.jbox.biz.ResultDO 业务返回model统一封装
com.github.jbox.biz.PageResultDO (分页Result)
com.github.jbox.biz.IErrorCode 业务错误结果统一封装
com.github.jbox.biz.BizException 业务异常统一封装

  • 详见: com.github.jbox.http.HttpGetClient
  • 详见: com.github.jbox.http.HttpPostClient

  • 详见: com.github.jbox.scheduler.TaskScheduler

  • 详见: com.github.jbox.script.ScriptExecutor
  • 支持:
    • JavaScript
    • Groovy
    • Python

  • 详见: com.github.jbox.serializer.ISerializer
  • 默认支持:
    • fastjson: com.github.jbox.serializer.support.FastJsonSerializer
    • hessian2: com.github.jbox.serializer.support.Hessian2Serializer
    • kryo: com.github.jbox.serializer.support.KryoSerializer
    • jdk: com.github.jbox.serializer.support.JdkSerializer
    • jdk(with gzip): com.github.jbox.serializer.support.JdkGzipSerializer

  • Spring容器启动耗时监控: com.github.jbox.spring.BeanInstantiationMonitor
  • SpringContext注入: com.github.jbox.spring.AbstractApplicationContextAware
  • 懒初始化Bean支持: com.github.jbox.spring.LazyInitializingBean
  • 非Spring托管Bean @Resource@Autowired@Value适配器: com.github.jbox.spring.SpringAutowiredAdaptor
  • @Value注解动态配置支持: com.github.jbox.spring.DynamicPropertySourcesPlaceholder
    • 默认支持淘宝Diamond: DiamondPropertySourcesPlaceholder;

utils desc
JboxUtils 通用工具方法: getFieldValuegetStackTracerunWithNewMdcContext
AESUtils AES加解密
AopTargetUtils 获取AOP target
BeanCopyUtil Bean属性对拷, 忽略属性类型
DateUtils 日期时间格式化/解析
HexStr 16进制与byte转换
IPv4 IPv4地址获取
Mac Mac地址获取
MapBuilder Map构建器
JsonAppender append json string
Collections3 Collections扩展
Objects2 Objects扩展
Performer 性能测试工具, 监控如 RTQPS
ProxyTargetUtils 获取Proxy target(仅支持Proxy实现包含target属性的情况)
SizeOf 精确测量内存内Java对象大小(-javaagent)
Tony 玩具工具

todo

  • 可持久化缓存
  • Shell执行Service

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages