《顾睿:如何利用Redisson分布式化传统Web项目(68页).pdf》由会员分享,可在线阅读,更多相关《顾睿:如何利用Redisson分布式化传统Web项目(68页).pdf(68页珍藏版)》请在三个皮匠报告上搜索。
1、如何利用Redisson分布式化传统Web项目Redisson Team顾睿How to Distributify Traditional Web Applications with Redisson关于我About Me传统Web项目的构成分布式化的历程Redis银弹+Redisson改造方案的实施2 3 41Composition of a TraditionalWeb ApplicationThe Journey to Distributifya Traditional Web ApplicationRedis the Silver Bulletand RedissonReady,Ste
2、ady,Action!传统Web项目的构成Composition of a Traditional Web Application表现层/Presentation Layer应用层/Application Layer业务层/Business Layer持久层/Persistent LayerTypical Architecture of a Traditional Web Application传统Web项目基本架构表现层/Presentation LayerHTML+JavaScriptMobile App传统Web项目基本技术栈Typical Technology Stackof a Tr
3、aditional Web ApplicationTypical Technology Stackof a Traditional Web Application传统Web项目基本技术栈应用层/Application Layer业务层/Business Layer持久层/Persistent LayerTypical Pivotal Technology Stackof a Traditional Web Application传统Web项目基本技术栈非高并发非高可用非分布式Characteristics of a Traditional Web ApplicationNot Distribu
4、tedNot Highly ConcurrentNot Highly Available传统Web项目的典型特征分布式化的历程The Journey to Distributify a Traditional Web Application网络 高度互联What is Distributed Systems集群 多节点单一 透明化Interconnected networkMulti-node clusterTransparent single coherent system什么是分布式系统Prof.Andrew Stuart TanenbaumCreator of MINIXSource:W
5、ikipedia开放性Characteristics of Distributed Systems透明性扩展性OpennessTransparencyScalability分布式系统的特点并发性ConcurrencyMethods to Implement Distributed Systems分布式化的实现方式1架构细分Slicing第N层/Layer N第N-2层/Layer N-2第四层/Layer 4第二层/Layer 2第一层/Layer 1第三层/Layer 3第N-3层/Layer N-3第N-1层/Layer N-1表现层/Presentation Layer应用层/Appli
6、cation Layer业务层/Business Layer持久层/Persistent LayerMethods to Implement Distributed Systems分布式化的实现方式2服务化、模块化Service Oriented Modularisation第N层/Layer N第N-2层/Layer N-2第四层/Layer 4第二层/Layer 2第一层/Layer 1第三层/Layer 3第N-3层/Layer N-3第N-1层/Layer N-1Methods to Implement Distributed Systems分布式化的实现方式3数据中心化Data Ce
7、ntralised TransformationMethods to Implement Distributed Systems分布式化的实现方式4事件驱动Event Driven Transformation消息总线/Message BusChallenges Faced in Implementing Distributed Systems分布式系统的挑战高并发高可用分布式DistributedHigh ConcurrencyHighly AvailableChallenges Faced in Implementing Distributed Systems分布式系统的挑战高并发High
8、 Concurrency缓存线程池同步异步处理分库列队全局锁CacheSync Async ProcessingQueueThread PoolShardingGlobal LockingChallenges Faced in Implementing Distributed Systems分布式系统的挑战高可用Highly Available重试策略限流限频Retry StrategyFlow LimitingRate LimitingRedis银弹+RedissonRedis the Silver Bullet and RedissonRedis as a Silver BulletRed
9、is银弹数据结构丰富Rich Data Types读写性能优异High Performance Read Write Access支持持久化Support Persistence多种高可用模式Multiple HA Mode稳定性极强Extremely StableWhat is Redisson什么是Redisson为JVM提供基于Redis的高性能驻内存数据网格Ultra-Fast Redis Based In-Memory Data Grid for JVM操作最简单功能最丰富的Redis智能客户端Simplest,yet Feature-Rich Smart Client for Re
10、disWhat is Redisson什么是Redisson开源版企业版Open Source Community Edition社区开源版Apache 2.0 LicenseRedisson Commercial LicenseCommercial Enterprise Edition企业版Redisson PerformanceRedisson的性能本地单机Local SingleIntel Core i7 3612QM16GB RAM256线程ThreadRedisson*Jedis平均响应时间每秒吞吐量Average Response TimeThroughput per second
11、 1ms 1ms193K 231K52K 55K*采用企业版高速引擎测试*Tests undertaken with Ultra-Fast PRO EngineRedisson操作简单Redisson is Simple to Use线程安全Thread Safe Operations标准Java接口Standard Java Interface门槛低上手易No Learning CurveRedisson的智能化Smart Redis Client1.多种连接类型:单机、主从、哨兵、集群和云平台2.支持配置文件:开发-生产变化,连接类型变化无需修改代码3.适配拓扑变化:支持节点自动发现4.弹
12、性的连接池:自主管理连接数量,可伸可缩5.动态连接监控:断线重连,命令失败重试,监控DNS变化1.Topology Neutral:Supports all types of connection mode(single,M-S,sentinel,cluster and cloud)2.Configuration:File based configuration provides smoothtransition between dev and prod environment3.Topology Sensing:Support node auto-discovery4.Connection
13、Pool:Provides configurable self-managed elasticconnection pool5.Connection Monitoring:Supports auto reconnect,commandauto retry and detects DNS changesRedisson的智能化Smart Redis Client6.连接池独立性:阻塞命令,非阻塞命令连接池独立7.读写操作可控:读写分离方式可控,支持可控负载均衡8.操作方式灵活:同时支持同步和异步操作,支持集群管道9.底层扩展性强:支持底层客户端,支持定制命令10.数据编码丰富:官方提供10种数据
14、编码类型,无需手动转换6.Command Isolation:Employs dedicated connection pools forblocking and non-blocking commands7.Load Balancing:Provides configurable load balancer andread-write separation strategy8.Flexible Operation:Supports both sync and async operations,including pipeline usage in Cluster environment9.L
15、ow Level:Supports low level command invocation,supportscustom command invocation10.Serialisation:Officially supports 10 different(de)encoders forautomatic(de)serialisationArchitecture of RedissonRedisson的架构基础功能基础功能高级功能其他Redis客户端RedissonOther Redis ClientsAdvanced FeaturesBasicFeaturesBasicFeaturesAr
16、chitecture of RedissonRedisson的架构Redis客户端(执行Redis指令)Redis Client(Command Execution)Redis协议解析 Redis ProtocolRedis连接 Redis ConnectionRedis发布订阅连接 Redis PubSub Connection连接池和连接监控 Connection Pool&Monitoring主节点连接池Master Pool从节点连接池Slave Pool订阅发布连接池PubSub Pool连接类型管理 Connection Management单机 Single哨兵 Sentinel
17、云服务 Cloud集群 Cluster其他客户端功能最多到此即止Other Clients Ends Here or Somewhere BelowRedisson客户端(红线在下面)Redisson Client主从 M-SArchitecture of RedissonRedisson的架构Redisson 独立运算节点 Redisson Node第三方框架/工具支持 Third Party Frameworks/Tools SupportSpring框架 Spring FrameworkSpring缓存 Spring CacheSpring会话 Spring SessionHiberna
18、te 二级缓存Hibernate Level2 CacheJCache(JSR 107)Tomcat 会话管理Tomcat Session Manager分布式基础数据结构 Distributed Data StructuresRedisson客户端(红线在下面)Redisson Client分布式集合Distributed Collections分布式通用对象Distributed Objects分布式锁Distributed Locks分布式同步器DistributedSynchronisers分布式服务中间件 Distributed Services Middleware分布式远程服务(
19、RPC)Distributed RemoteService分布式实时对象服务(OHM)Distributed Live Object Service分布式执行服务Distributed ExecutorService分布式调度任务服务Distributed SchedulerServiceMapReduce服务 MapReduce Service监控与统计 Management&StatisticsDropwisard MetricsJMX29种10种9种5种7种Redisson功能丰富Features of Redisson分布式集合分布式对象分布式锁及同步器分布式服务第三方框架/工具直接支
20、持DistributedCollectionsDistributedObjectsDistributedLocks andSynchronisersDistributedServicesDirect Support for Third PartyFrameworks&Tools其它Redis客户端Features of Other Redis Clients分布式集合分布式对象分布式锁及同步器分布式服务第三方框架/工具直接支持DistributedCollectionsDistributedObjectsDistributedLocks andSynchronisersDistributedS
21、ervicesDirect Support for Third PartyFrameworks&Tools5种5种无N/A无N/A无N/ADistributed Collections分布式集合29种结构原子性操作元素单独过期本地缓存45倍性能提升Atomic OperationsData TypesIndividual Element EvictionNear Cache45X PerformanceJava接口Java InterfaceDistributed Collections分布式集合 Map MapCache*SetMultiMap ListMultiMap SetMultiMa
22、pCache*ListMultiMapCache*LocalCachedMap BlockingQueue BlockingDeque BoundedBlockingQueue BlockingFairQueue DelayedQueue PriorityQueue PriorityDeque*允许集合中单个元素过期,此功能原生Redis及其他客户端均不具备 提供本地缓存(Near Cache)功能,能使读取速度最高提升45倍,此功能其他客户端均不具备*Allow individual element eviction in collection.Not supported in vanill
23、a Redis and other clients.Support local cache(Near Cache),improves read operation up to 45x.Not supported in other clients.Set SetCache*SortedSet ScoredSortedSet LexSortedSet List Queue Deque BlockingFairQueue BlockingFairDeque ClusteredMap ClusteredSet ClusteredLocalCachedMap*ClusteredMapCache*Loca
24、lCachedMapCache*Distributed Objects分布式对象10种结构原子性操作Atomic OperationsData Types类Java接口Java CompatibleInterfaceDistributed Objects分布式对象 Bucket(通用对象桶)BinaryStream(Input&Output Stream)Geo(地理空间对象桶)BitSet AtomicLong AtomicDouble Topic(Pub/Sub)BloomFilter HyperLogLogDistributed Locks&Synchronisers分布式锁和同步器5种
25、锁红锁实现RedLock ImplementationLocksJavaLock接口Java LockInterface3种同步器SynchronisersDistributed Locks&Synchronisers分布式锁和同步器 Lock FairLock RedLock MultiLock ReadWriteLock Semaphore PermitExpirableSemaphore CountDownLatch Phaser(计划中 Planned)Distributed Services Middleware分布式服务中间件远程服务Remote Service RPC 服务 支持
26、同步异步 支持列队模式和并发模式 支持异常反馈 RPC Service Support sync&async operation Support serial&concurrent invocation Support exception transportationDistributed Services Middleware分布式服务中间件实时对象服务Live Object Service OHM 服务 普通Java对象分布式化 Java对象映射为Redis的hash结构 支持内嵌复杂结构 OHM Service Distributify standard Java Objects Jav
27、a Objects maps to Redis hash Support nested and complex structureDistributed Services Middleware分布式服务中间件执行服务Executor Service 实现了Java的ExecutorService接口 支持Callable和Runnable任务 支持Redisson独立运算节点 任务支持Redisson依赖注入 Supports ExecutorService Javainterface Supports Callable&Runnable tasks Supports Redisson Nod
28、e execution Supports Redisson instance injectionin tasksDistributed Services Middleware分布式服务中间件调度任务服务Scheduler Service 实现了Java的ScheduledExecutorService接口 支持所有分布式执行服务功能 支持Quartz的CRON格式定义触发 SupportsScheduledExecuterServiceInterface Supports all features of ExecutorService Supports CRON notation forexe
29、cution time and frequencyDistributed Services Middleware分布式服务中间件MapReduce服务MapReduce Service RMap,RSet,RList和RQueue提供均支持MR服务 提供Mapper,Reducer和Collator接口 支持Redisson独立运算节点 支持并行执行二次拆分的任务 Provides MapReduce service toRMap,RSet,RList and RQueue Supports Mapper,Reducer andCollator Interface Supports Redis
30、son Node execution Supports Splitting and concurrentexecution for both Map and Setbased typesRedisson NodeRedisson独立运算节点 分布式独立计算节点,微服务节点 可参与执行所有分布式服务提交的任务 可以嵌入运行在业务JVM 亦可独立运行,提供可执行Jar包和Docker镜像 Distributed compute node and micro service node Can participate in all tasks submitted by distributed serv
31、ices Can be embedded into application Can also be ran as an independent process Provides Docker image and executable JarRedisson NodeRedisson独立运算节点RedissonNode运算节点RedissonNode运算节点RedissonNode运算节点Redis(单机,主从,哨兵,集群或云平台)业务JVM业务JVM业务JVMRedisson客户端Redisson客户端Redisson客户端改造方案的实施Ready,Steady,Action!table1Id
32、1234Column1A1A2A3A4Column2B1B2B3B4Column3C1C2C3C4SELECT*FROM table1 WHERE id=?缓存Cache数据库Database内存Memorymap1Key1234Valueid:1,column1:A1,.id:2,column1:A2,.id:3,column1:A3,.id:4,column1:A4,.map1.get(?)Data Oriented Caching Solution数据缓存方案Data Oriented Caching Solution数据缓存方案Redis基本结构Java接口缓存设计模式数据预热Redi
33、s Hashjava.util.Mapjava.util.concurrent.ConcurrentMapRead ThroughWrite ThroughWrite BehindData PreloadRedisson映射Redisson MapData Oriented Caching Solution数据缓存方案Read Through 防缓存击穿元素为粒度分布式全局锁二次读取Redis未命中-全局锁-Redis再次未命中-读取器加载-写入Redis-解锁-返回Element Based Distributed Global LockingDouble ReadRedis Miss-Gl
34、obal Lock-Redis Missed Again-Map Loader-Write Redis-Unlock-ReturnRedisson映射Redisson MapData Oriented Caching Solution数据缓存方案Redisson本地缓存Redisson Near CacheRedisson映射缓存Redisson MapCache映射缓存多值映射缓存集群式映射缓存单个元素TTL有界映射(LRU)映射变化监听器MapCacheMultiMapCacheClusteredMapCacheIndividual Element TTLBounded Map(LRU)M
35、apListenersRedisson映射Redisson MapData Oriented Caching Solution数据缓存方案JVMMapRedisHashRedisHashRedisHashDBDBDBDBDBDBRedissonClusteredMapCacheRedis Hash DBCache缓存Cache缓存Cache缓存Data Oriented Caching Solution数据缓存方案Redisson Near CacheRedisson映射缓存Redisson MapCacheRedisson映射Redisson MapJVM缓存Redis数据解决热点数据缓存策
36、略清除策略JVM Cache Redis DataSolve Data Hotspot IssueEviction:None,LFU,LRU,Soft,WeakInvalidation:On Change,Clear on Reconnection,Load on ReconnectionRedisson本地缓存映射Data Oriented Caching Solution数据缓存方案Redisson本地缓存映射Redisson Near CacheRedisson映射缓存Redisson MapCacheRedisson映射Redisson MapRedisson本地缓存映射缓存?Redi
37、sson Near Cache MapCache?Data Oriented Caching Solution数据缓存方案Redisson本地缓存映射缓存Redisson Near Cache MapCache以上所有功能All the features aboveJVMMapRedisHashDBDBDBCacheCache缓存缓存JVM Map Redis Hash DBData Oriented Caching Solution数据缓存方案传统业务代码Traditional Business LogicEntityManagerTransactionManagerDAOQueryCach
38、eManagerpublic class UserREST AutowiredQualifier(users)private Map users;GETPath(/users/id)public User getUser(PathParam Long id)return users.get(id);Redisson MapCacheRedisson映射缓存VSRedis CacheRedis缓存Data Oriented Caching Solution数据缓存方案Framework Based Caching Solution框架缓存方案Spring缓存Spring CacheDB缓存DB
39、CacheRedisson Near CacheRedisson映射缓存Redisson MapCacheRedisson本地缓存映射Redisson本地缓存映射缓存Redisson Near Cache MapCacheFramework Based Caching Solution框架缓存方案通用缓存Common CacheJSR107 JCACHE-Java Temporary Caching API100%通过标准官方的技术兼容性检查100%pass for the official TCK tests唯一受标准官方认可的非JVM的堆外(Redis)储存解决方案The only non
40、-JVM based off-heap(Redis)storage solution officiallyrecognised by the standard bodyjavax.cacheFramework Based Caching Solution框架缓存方案会话SessionTomcat非粘性会话管理Support Annotation ConfigurationTomcat 6.x,7.x,8.xSpring Session 1.2.2+EnableRedissonHttpSession支持注解配置Global Locking全局锁竞争Contention可重入Reentrant防死
41、锁Deadlock PreventionRedisson锁Redisson LockRedis SETNX+EXPIRE?java.util.concurrent.locks.LockRedisson读写锁Redisson Read Write Lockjava.util.concurrent.locks.ReentrantReadWriteLockGlobal Locking全局锁Redisson锁Redisson LockRedisson公平锁Redisson Fair LockRedisson联锁Redisson MultiLockRedisson红锁Redisson RedLockGl
42、obal Locking全局锁Redisson读写锁Redisson Read Write LockRedisson读锁Redisson Read LockRedisson写锁Redisson Write LockGlobal Locking全局锁Redisson信号量Redisson Semaphore有限资源共享Limited Resource SharingRedisson可过期性信号量Redisson Permit Expirable SemaphoreUsed By用户-Carlos Alexandro BeckerSite Reliability Engineer“By emplo
43、ying Redisson,We achieved a simplified architecture,reduced a little our time-to-production and improved our monitoring.All that with zero downtime and with 4k less lines of code than before.”Distributed Locking with Redishttps:/ By用户-Rajan NatarajanCTO“Just fell in love with Redisson.Been little ov
44、erwhelmed by overloaded data fabric solutions that necessitates complex setup requirements.”“Redissons simplicity and the flat learning curve made it easy for us to integrate into our existing projects of big size.The solution objectives are achieved without much fuss”Used By用户and many more https:/redisson.org官方网站https:/redisson.pro源代码仓库Source Codehttps:/ CodeGitter IM:mrniko/redissonIssues:GitHub请加星!Please Star Us!