##前记
就在6月京东引领了618年中大促,真的是外行看热闹内行看技术在看了多个技术分享文章后便想着能在自己的博客中做一个比较精简的总结以供大家一起学习,请注意下面会有大量的文字阅读和核技术分享,做好枯燥的打算!
##目录
1、打造军演机器人
2、使用深度学习优化亿级
3、打造三端融合开发平台
4、智能机器人发展
5、物流系统优化
6、Kubernetes实战
7、京东移动端实战
8、docker实战
9、秒杀限流
大致我在网站总结了就是上述几点,还有其他的有机会我会在补上这里我贴上文章的连接大家也可以自行详细阅读infoq链接––JAVA后端技术
###打造军演机器人 ForceBot
-
核心功能
平台核心功能在于需要向性能测试人员提供一个高效的可操作环境用于准确的描述其测试逻辑,并兼容大部门公司业务服务调用方式和场景。京东内部业务系统大部分使用 Java 语言开发,使用基础平台中间件技术部开发的 JSF、JMQ 等中间件进行服务调用,为此提供一个与 Java 语言高度兼容的脚本语言执行环境作为性能测试逻辑编写基础尤为关键。
系统选用了兼容 JSR223 规范的 Groovy 作为主要脚本语言,并效仿 Java 下著名的单元测试框架 Junit 的设计哲学设计了一套高效并友好的测试逻辑开发和执行环境。
平台核心脚本引擎为性能测试脚本设计了多种生命周期控制,以适用不同的场景,并使性能最优化。在脚本编写过程中,用户仅需要在 Groovy 脚本中使用内置的几种注解便可对脚本的执行和数据采集进行精确灵活的控制,如测试类生命周期、事物、执行权重等,大大提升脚本开发效率。 -
容器部署
为了快速的创建测试集群,Agent 采用 Docker 容器通过镜像方式进行自动化部署。这样做好处如下:
利用镜像方式,弹性伸缩快捷;
利用 Docker 资源隔离,不影响 CDN 服务;
运行环境集成,不需要额外配置运行所需类库;
每个 Agent 的资源标准化,能启动的虚拟用户数固定,应用不需要再做资源调度; -
服务通信
Task Service 采用了 gRPC 与 Agent 进行通信,通过接口描述语言生成接口服务。gRPC 是基于 http2 协议,序列化使用的是 protobuf3,并在除标准单向 RPC 请求调用方式外,提供了双向流式调用,允许在其基础上进一步构建带状态的长链接调用,并允许被调用服务在会话周期内主动向调用者推送数据, 其 java 语言版采用 netty4 作为网络 IO 通讯。使用 gRPC 作为服务框架,主要原因有两点。
服务调用有可能会跨网络,可以提供 http2 协议;
服务端可以认证加密,在外网环境下,可以保证数据安全。 -
Agent 实现
Agent 采用多进行多线程的结构设计。主进程负责任务的接收、预处理和 Worker 进程的调度。将任务的控制和执行进行进程级别的分离,这样可以为测试的执行提供相对独立且高度灵活的类库环境,使不通的任务之间的类库不会产生冲突,并有益于提升程序运行效率。
Agent 与 Task Service 保持通信,向系统注册自身并获取指令。根据任务需要启动 Worker 进程执行任务,主进程负责管理 Worker 进程的生命周期。Worker 进程启动后会通过 gRPC 与主进程保持通信,获取新的变更指令,如线程数变化通知,及时进行调整。 -
数据收集和计算
实现秒级监控。数据的收集工作由 Monitor Service 完成,也是采用 GRPC 作为服务框架。Agent 每秒上报一次数据,包括性能,JVM 等值。
Monitor Service 将数据经 Kafka 发送给 Compute Service,进行数据的流式计算后,产生 TPS,包括 TP999,TP99,TP90,TP50,MAX,MIN 等指标存储到 ES 中进行查询展示。
为了计算整体的 TPS,需要每个 Agent 把每次调用的性能数据上报,会产生大量的数据,Agent 对每秒的性能数据进行了必要的合并,组提交到监控服务以进行更有效有的传输。