智能大数据平台
0x00 智能大数据平台
智能大数据平台作为风控平台的基础部分,提供大数据存储和计算能力,此外还有系统DevOps相关功能。存储包括HBase、HDFS、ES、Zookeeper、Kafka等,计算包括Spark、Flink、Hive、Tez、Yarn等,调度框架集成了DolphinScheduler。
支持完善的服务器初装时初始化工具;
支持友好的Web浏览器管理控制台;
支持多集群管理;配合设备网络策略可实现多集群间的访问隔离;
支持存储集群与计算集群分离架构;
支持集群节点管理,如节点监控、资源私用率、节点状态等;
支持集群大数据服务的服务监控、组件管理、组件启停、组件扩展及删除,组件滚动重启;
支持丰富的监控模板和视图;
支持大数据服务的扩展;
支持服务配置文件修改;
支持配置文件修改后集群服务自动检测需要重启生效的依赖服务提示;
支持各大数据服务Web UIs便捷访问;
支持服务异常终止时自动拉起;
提供丰富的监控模板,涵盖服务器监控及大数据服务监控等;
支持监控模板规则自定义;
支持通知组、通知对象管理;
支持邮件、微信、钉钉、回调函数等多种告警通知方式;
支持控制台与系 ...
精细化JVM应用性能剖析工具
何为精细化?
我们常说“精细化运营”、“精细化管理”,那什么是“精细化性能剖析”呢?在回答这个问题之前,我们先看看我们这个行业开发人员饱受的困扰:
不清楚应用的运行情况,包括但不限于GC情况、热点代码、热点线程、异常(特别是被吞没的异常);
不清楚应用代码执行情况,甚至不知道某个模块是否还可能会运行,尤其是对于有着一定历史的应用,可能已经有很多开发在上面贡献过代码,但随着业务发展这些功能可能已经不再被使用;
不清楚应用的IO情况,注意,这里说的绝对不仅仅是zabbix上的"磁盘IO",而是具体到某个文件、某个端口、某个线程的IO情况;
这些问题导致的直接后果就是:对于性能优化,无从下手,只能凭经验和直觉去猜测、埋点、优化,当然,最终结果一般就是“加机器扩容”。
了解了我们锁遇到的困扰或者面临的困境之后,我们结合精细化运营和精细化管理的概念来回答什么精细化性能剖析。精细化是基于规范化的基础上建立的一种理念,我们要把目标粒度细致化、精准化、具体化。精细化性能剖析,是基于某种规范详细的分析应用的性能,能够量化性能指标,明确出问题的瓶颈。
值得高兴的是JDK7以上已经内 ...
理解Aerospike的事务
该博客文章介绍如何在Aerospike应用中实现事务语义。由于Aerospike事务的单一记录范围和某些集群转换,某些情况下的处理方式必须不同于您可能熟悉的传统数据库。具体来说,该帖子讨论:
如何处理常见的读写事务
如何解决由于网络或节点故障而导致的分区更改“不确定(in-doubt)”事务。
同一个数据库中不同的数据
作为开发人员,您需要在正确性和可用性范围内存储和处理不同类型的数据。对于一类数据,一致性至关重要。例如,金融应用程序必须准确地保存记录,账户登录必须使用最新的密码,以及在解除好友连接后必须立即停止社交网络上的共享(类似白名单)。数据库事务为此类数据提供ACID保证:
Atomicity(原子性):一个事务要么成功要么失败。一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被恢复(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
Consistency(一致性):一个事务始终使数据库处于一致状态。在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资 ...
理解Aerospike的基本概念
什么是 Aerospike
Aerospike(以下简称 AS)一个以分布式为核心基础,可基于 RAM存储索引、数据或将数据存储在闪存/SSD上的是一个分布式数据库。提供类似传统数据库的ACID操作。它主要用于在数百 G、上万 T 的大数据量并且在数万以上并发的情况下,对性能也有毫秒级兑取插入的场景。
目前主要用于互联网广告行业、消息推送行业、直播行业等。
K-V 类型的数据库必须要提的就是 redis,redis 数据完全存储在内存虽然保证了查询性能,但是成本太高。AS 最大的卖点就是可以存储在 SSD 上,并且保证和 redis 相同的查询性能。AS 内部在访问 SSD 屏蔽了文件系统层级,直接访问地址,保证了数据的读取速度。 AS 同时支持二级索引与聚合,支持简单的sql操作,相比于其他 nosql 数据库,有一定优势。
AS 的特性
可预见的高性能
99%的响应在 1ms 内实现,99.9%的响应在 5ms 内实现。
混合架构
索引存储在 RAM 中,数据存储在闪存或SDD 上。
集群感知客户端软件
客户端知晓数据的存放位置,因此能够通过一次单跳就可以检索到数据。
...
Aerospike的使用案列
导入依赖
Java 程序多用Maven 构建,需要导入一下依赖包:
123456<!-- KV 缓存 aerospike --><dependency> <groupId>com.aerospike</groupId> <artifactId>aerospike-client</artifactId> <version>4.1.11</version></dependency>
Aerospike 天然支持Netty,如果需要用到 Netty 做 IO 循环事件,需要增加如下 POC 依赖:
123456789101112131415161718192021222324252627<dependencies> <dependency> <groupId>com.aerospike</groupId> <artifactId>aerospike-client</artifact ...
Aerospike-内存和硬盘混合存储的kv数据库
为什么会有Aerospike?
Redis是一个纯内存型数据库,在基准测试中,机器资源为16C14G的GCE,读TPS能达到133000,写TPS约为130000,性能上没有多大问题。虽然高性能给业务处理带来了好处,但纯内存存储,对硬件资源的要求也很高,企业投入的成本也相应的增加。在硬件中,内存的价格远比磁盘贵,而且内存量越大越贵,因此,全内存的存储成本非常昂贵。为了节省成本,我们需要把一部分不经常用到的数据存储到硬盘上,但是又要求性能不能下降很多,这时候 Aerospike 数据库应运而生,它可以是内存+SSD(或者NVMe、PMEM)存储。
Aerospike 官网:http://www.aerospike.com/
github地址:https://github.com/aerospike
Redis与Aerospike一些对比
Redis
Aerospike
运维
运维成本较高,扩容麻烦
部署和扩容都比较容易
性能
读写性能高
读性能高,写性能中高
成本
纯内存数据库,成本高
内存+ssd,成功较低
排序
支持
不支持
集群
简单集群 ...
个推从Redis到Aerospike的踩坑经验
个推专注为开发者们提供消息推送服务多年。通过个推SDK,手机终端与服务器建立长连接,维持在线状态。然而在网络异常等情况下,消息无法实时送达到终端用户,因而推送服务器建立了一份离线消息列表,以待用户重新登录时,进行消息的下发。这部分数据存储在个推Redis集群,整个集群包括主从共百余个实例,key的数量在10亿级别,存储空间在T级别,带来了一定的维护成本和运维挑战。作为个推的后端开发工程师,我们也一直在寻找高性价比的方案。
个推整个集群的QPS在百万级别,若选择使用Aerospike,对比实测下来,我们发现单台搭载单块Inter SSD 4600的物理机,可以达到接近10w的QPS,即几十台机器就可以满足现有的需求,并能够支撑未来较长一段时间的业务需求。
Aerospike的优势
Aerospike是一个高性能、可扩展、可靠性强的NoSQL解决方案,支持RAM和SSD作为存储介质,并专门针对SSD特殊优化,广泛应用于实时竞价等实时计算领域。官方保证99%的操作在1ms内完成,并提供集群数据自动Rebalance、集群感知客户端等功能,且支持超大规模数据集(100T级别)的存储。
作为KV ...
AspectJ原生注解注入Spring对象
0x00 需求背景
我们部门计划要做一个公共服务管理平台,主要给后端业务提供配置化服务,将配置中心的部分配置迁移到服务平台的可视化界面中开放给运营侧配置。当然我们也提供了文图音视任务状态的管理能力,为补偿失败任务提供了益中解决方案;同时对各个应用集群节点也进行了监控,对于需要将数据放在内存场景的情况进行管控。
算法研发同学也对于服务平台“寄予厚望”,希望我们能提供一套AB测试方案,能后帮助他们对比算法优化前后的效果。一番需求沟通和评审之后,我们对ABtest的设计也就有了一个具体的方案,此处不对设计方案做过多的说明。
图1 ABtest设计方案
为了减少对业务代码的入侵,在上图的设计中,服务心跳、ABTEST的逻辑封装在服务平台提供的SDK中。其中,ABTEST使用了AspectJ实现对业务代码的修改和增强。
为了不破坏原有业务的吞吐量,在开发过程中用到了消息队列kafka同步消息,但是kafka集群的配置是在配置中心提供的,不同的环境、不同的机房配置不一样,问题:如何将动态配置注入到AspectJ的切面中呢?
0x01 使用AspectJ实现业务增强
服务平台封装的SDK是纯Ja ...
服务平台AB TEST DDD设计
一、前言
领域驱动设计(Domain-Driven Design,简称DDD),来源于 2004 年著名建模专家 Eric Evans 发表的其最具影响力的书籍 Domain-Driven Design - Tacking Complexity in the Heart of Software(领域驱动设计——软件核心复杂性应对之道)一书。书中提出了领域驱动设计的概念。随着互联网公司深入经济实体,业务越来越复杂,在软件开发过程中也会遇到越来越多的问题。尽管DDD看似是一种“古老”的思想,但直到近几年微服务架构的流行,领域设计才开始受到越来越多的关注。
二、初心
以业务为中心,产研团队如何高效快速迭代、应对业务的复杂
同盾内容安全服务平台围绕文图音视内容服务相关的业务衍生而来,主要针对内容安全相关模型提供 A/B 测试、实验结果评估、模型服务能力一键切换、合作方定制化配置、特殊合作方熔断限流、应用指标管理、业务数据同步检测、音视文图任务补偿、服务节点状态维护等。
本文就服务平台一期:模型A/B测试业务设计展开详细的论述,涉及A/B Test、实验结果计算、指标管理、他方应用节点状态维 ...
MAC使用HSDB连接进程ID报错
MAC使用HSDB连接进程ID报错
在mac使用JHSDB运行:java -cp $JAVA_HOME/lib/sa-jdi.jar sun.jvm.hotspot.HSDB 时报错
sun.jvm.hotspot.debugger.DebuggerException:Can’t attach to the process.Could be caused by an incorrect pid or lak of privileges
翻译:sun.jvm.hotspot.debugger.DebuggerException:无法附加到进程。可能是由于不正确的pid或特权不足引起的
正确姿势:sudo java -cp $JAVA_HOME/lib/sa-jdi.jar sun.jvm.hotspot.HSDB