MapDB

高德服务单元化方案和架构实践

与世无争的帅哥 提交于 2019-12-05 14:03:53
导读 :本文主要介绍了高德在服务单元化建设方面的一些实践经验,服务单元化建设面临很多共性问题,如请求路由、单元封闭、数据同步,有的有成熟方案可以借鉴和使用,但不同公司的业务不尽相同,要尽可能的结合业务特点,做相应的设计和处理。 一、为什么要做单元化 单机房资源瓶颈 随着业务体量和服务用户群体的增长,单机房或同城双机房无法支持服务的持续扩容。 服务异地容灾 异地容灾已经成为核心服务的标配,有的服务虽然进行了多地多机房部署,但数据还是只在中心机房,实现真正意义上的异地多活,就需要对服务进行单元化改造。 二、高德单元化的特点 在做高德单元化项目时,我们首先要考虑的是结合高德的业务特点,看高德的单元化有什么不一样的诉求,这样就清楚哪些经验和方案是可以直接拿来用的,哪些又是需要我们去解决的。 高德业务和传统的在线交易业务还是不太一样,高德为用户提供以导航为代表的出行服务,很多业务场景对服务的RT要求会很高,所以在做单元化方案时,尽可能减少对整体服务RT的影响就是我们需要重点考虑的问题,尽量做到数据离用户近一些。转换到单元化技术层面需要解决两个问题: 1.用户设备的单元接入需要尽可能的做到就近接入,用户真实地理位置接近哪个单元就接入哪个单元,如华北用户接入到张北,华南接入到深圳。 2.用户的单元划分最好能与就近接入的单元保持一致,减少单元间的跨单元路由。如用户请求从深圳进来

mapdb详解

醉酒当歌 提交于 2019-12-04 04:07:36
对于大部分系统来说,mapdb并无太大价值,而且增加了成本。但是如果一级缓存巨大例如数以十GB级别,或占据了整个JVM的1/2以上,mapdb的价值就会体现出来。正如其官网介绍: MapDB provides Java Maps, Sets, Lists, Queues and other collections backed by off-heap or on-disk storage. It is a hybrid between java collection framework and embedded database engine. 使用MapDB存储map后,jvm gc的压力就会大大减少。 具体使用可参考:http://www.mapdb.org/down/mapdb-manual-20.pdf 来源: https://www.cnblogs.com/zhjh256/p/11540974.html

MapDB ClassNotFoundException: kotlin.jvm.internal.Intrinsics

匆匆过客 提交于 2019-11-29 04:49:18
I am trying to run a simple mapdb example, but get the error: Exception in thread "main" java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics at org.mapdb.DBMaker.fileDB(DBMaker.kt) at leechies.Truc.main(Truc.java:9) Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 2 more My class: package leechies; import java.util

MapDB使用入门

徘徊边缘 提交于 2019-11-29 01:52:08
背景 MapDB官网:http://www.mapdb.org 官方翻译之后的话:MapDB基于堆外存储、磁盘存储提供了Java的Maps、Sets、Lists、Queues等功能。它混合了Java集合框架和数据库引擎。它是基于Apache许可的免费的、开源的。 个人觉得:MapDB是一个轻量级的本地缓存的框架,它既可以使用对外存储,也可以使用磁盘存储(重启时数据不丢失)。它还提供事务的功能。 开发文档:https://jankotek.gitbooks.io/mapdb/content/quick-start/ 开发机器配置:i5-9400 6c6t,32g内存,固态硬盘 MapDB入门实战 1、引入jar包 <!-- https://mvnrepository.com/artifact/org.mapdb/mapdb --> <dependency> <groupId>org.mapdb</groupId> <artifactId>mapdb</artifactId> <version>3.0.7</version> </dependency> 2、基于堆外存储的Hello,Simple /** * 堆外内存map */ public static void offHeapMapTest1() { DB db = DBMaker.memoryDB().make();

MapDB ClassNotFoundException: kotlin.jvm.internal.Intrinsics

冷暖自知 提交于 2019-11-27 22:39:37
问题 I am trying to run a simple mapdb example, but get the error: Exception in thread "main" java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics at org.mapdb.DBMaker.fileDB(DBMaker.kt) at leechies.Truc.main(Truc.java:9) Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java

高德服务单元化方案和架构实践

℡╲_俬逩灬. 提交于 2019-11-25 21:00:38
导读 :本文主要介绍了高德在服务单元化建设方面的一些实践经验,服务单元化建设面临很多共性问题,如请求路由、单元封闭、数据同步,有的有成熟方案可以借鉴和使用,但不同公司的业务不尽相同,要尽可能的结合业务特点,做相应的设计和处理。 一、为什么要做单元化 单机房资源瓶颈 随着业务体量和服务用户群体的增长,单机房或同城双机房无法支持服务的持续扩容。 服务异地容灾 异地容灾已经成为核心服务的标配,有的服务虽然进行了多地多机房部署,但数据还是只在中心机房,实现真正意义上的异地多活,就需要对服务进行单元化改造。 二、高德单元化的特点 在做高德单元化项目时,我们首先要考虑的是结合高德的业务特点,看高德的单元化有什么不一样的诉求,这样就清楚哪些经验和方案是可以直接拿来用的,哪些又是需要我们去解决的。 高德业务和传统的在线交易业务还是不太一样,高德为用户提供以导航为代表的出行服务,很多业务场景对服务的RT要求会很高,所以在做单元化方案时,尽可能减少对整体服务RT的影响就是我们需要重点考虑的问题,尽量做到数据离用户近一些。转换到单元化技术层面需要解决两个问题: 1.用户设备的单元接入需要尽可能的做到就近接入,用户真实地理位置接近哪个单元就接入哪个单元,如华北用户接入到张北,华南接入到深圳。 2.用户的单元划分最好能与就近接入的单元保持一致,减少单元间的跨单元路由。如用户请求从深圳进来