
Java架构师之路PPT模板课件.pptx
88页单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,,,0,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,,,0,,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,,,0,,Java架构师学习之路,演讲人,XXX,20,XX,-10-17,Java架构师学习之路演讲人 XXX20XX-10-17,1,,,目录,01.,1、基础知识,07.,7、开源框架知识点,03.,3、高可用,05.,5、系统安全,02.,2、高性能架构,04.,4、性能优化,06.,6、微服务架构,08.,8、团队协作开发,目录01.1、基础知识07.7、开源框架知识点03.3、高可,2,1、基础知识,01,1、基础知识01,3,,,2,JVM性能调优,,,,,,01,,02,,03,,04,1. Java内存区域,2. 垃圾回收器和内存非配策略,3. JVM的执行子系统,4. 编写高效优雅的Java程序,,,05,5. 深入了解性能优化,2JVM性能调优010203041. Java内存区域2.,4,,,虚拟机的历史,运行时数据区域,深入辨析堆和栈,方法的出入栈,虚拟机中的对象,堆参数设置和内存溢出实战,JVM性能调优,,1. Java内存区域,虚拟机的历史JVM性能调优1. Java内存区域,5,,,GC概述,判断对象的存活,辨析强、弱等各种引用,GC算法,分代收集,垃圾回收器,JVM性能调优,,2. 垃圾回收器和内存非配策略,GC概述JVM性能调优2. 垃圾回收器和内存非配策略,6,,,Stop The World现象,GC日志解读,内存分配与回收策略,内存泄露和内存溢出辨析,JDK为我们提供的工具,了解MAT (Memory Analyzer Tool),JVM性能调优,,2. 垃圾回收器和内存非配策略,Stop The World现象JVM性能调优2. 垃圾回收,7,,,Class类文件的本质,Class文件格式,字节码指令,类加载机制,栈帧详解,方法调用详解,基于栈的字节码解析执行引擎,JVM性能调优,,3. JVM的执行子系统,Class类文件的本质JVM性能调优3. JVM的执行子系统,8,,,构造器参数太多怎么办,不需要实例化的类应该构造器私有,不要创建不必要的对象,避免使用终结方法(finalize),使类和成员的可访问性最小化,使可变性最小化,优先使用复合,接口优于抽象类,JVM性能调优,,4. 编写高效优雅的Java程序,构造器参数太多怎么办JVM性能调优4. 编写高效优雅的Jav,9,,,可变参数要谨慎使用,返回零长度的数组或集合,不要返回null,优先使用标准的异常,用枚举代替int常量,将局部变量的作用域最小化,精确计算,避免使用float和double,当心字符串连接的性能,JVM性能调优,,4. 编写高效优雅的Java程序,可变参数要谨慎使用JVM性能调优4. 编写高效优雅的Java,10,,,常用的性能评价/测试指标,常用的性能优化手段,详细了解应用服务器性能优化,JVM性能调优,,5. 深入了解性能优化,常用的性能评价/测试指标JVM性能调优5. 深入了解性能优化,11,,,,,,,,,网络协议,1. Netty应用,2. Netty进阶和实战,3. Netty源码分析,网络编程与高效IO,网络协议网络编程与高效IO,12,,,网络模型,TCP,UDP,HTTP,原生JDK网络编程(NIO/BIO),网络编程与高效IO,,网络协议,网络模型网络编程与高效IO网络协议,13,,,Netty是什么?为什么要用Netty?,第一个Netty程序,Netty组件再了解,解决粘包,半包问题,编解码器框架,序列化问题,单元测试,网络编程与高效IO,,1. Netty应用,Netty是什么?为什么要用Netty?网络编程与高效IO1,14,,,实现UDP通信,服务器推送技术,WebSocket通信,实现自己的通信框架,网络编程与高效IO,,2. Netty进阶和实战,实现UDP通信网络编程与高效IO2. Netty进阶和实战,15,,,引导过程分析,EventLoop和EventLoopGroup分析,服务端接受连接事件分析OP_ACCEPT,分析读事件OP_READ,分析写数据和处理写数据OP_WRITE,分析客户端连接和连接事件OP_CONNECT,网络编程与高效IO,,3. Netty源码分析,引导过程分析网络编程与高效IO3. Netty源码分析,16,,,并发编程进阶,,,,,1. 线程基础、线程之间的共享和协作,,,,,2. 线程的并发工具类,,,,,3. 原子操作CAS,,,,,4. 显式锁和AQS,,,,,5. 并发容器,,,,,6. 线程池,并发编程进阶1. 线程基础、线程之间的共享和协作2. 线程的,17,,,,并发编程进阶,01,,,02,,,,,7. 并发安全,8. JMM和底层实现原理,并发编程进阶01027. 并发安全8. JMM和底层实现原理,18,,,基础概念,启动和终止线程,线程间的共享,线程间的协作,并发编程进阶,,1. 线程基础、线程之间的共享和协作,基础概念并发编程进阶1. 线程基础、线程之间的共享和协作,19,,,Fork/Join,CountDownLatch作用、应用场景和实战,CyclicBarrier作用、应用场景和实战,Semaphore作、应用场景和实战,Exchange作用、应用场景和实战,Callable、Future和FutureTask,并发编程进阶,,2. 线程的并发工具类,Fork/Join并发编程进阶2. 线程的并发工具类,20,,,CAS的原理,CAS的问题,原子操作类的使用,并发编程进阶,,3. 原子操作CAS,CAS的原理并发编程进阶3. 原子操作CAS,21,,,显式锁,LockSupport工具进阶,AbstractQueuedSynchronizer实现及源码分析,并发编程进阶,,4. 显式锁和AQS,显式锁并发编程进阶4. 显式锁和AQS,22,,,ConcurrentHashMap,其他并发容器,阻塞队列,并发编程进阶,,5. 并发容器,ConcurrentHashMap并发编程进阶5. 并发容器,23,,,什么是线程池?为什么要用线程池?,实现一个我们自己的线程池,JDK中的线程池,线程池的工作机制,合理配置线程池,Executor框架,CompletionService,并发编程进阶,,6. 线程池,什么是线程池?为什么要用线程池?并发编程进阶6. 线程池,24,,,类的线程安全,如何做到类的线程安全,线程不安全引发的问题,线程安全的单例模式,并发编程进阶,,7. 并发安全,类的线程安全并发编程进阶7. 并发安全,25,,,现代计算机物理上的内存模型,Java内存模型 (JMM),并发编程进阶,,8. JMM和底层实现原理,现代计算机物理上的内存模型并发编程进阶8. JMM和底层实现,26,,,Mysql深度优化,,,1. Mysql逻辑架构入门介绍,,,,2. 存储引擎,,,,3. 业务设计,,,,4. 查询以及索引,,Mysql深度优化1. Mysql逻辑架构入门介绍2. 存储,27,,,MyISAM,Innodb,Archive,Memory,Federated,Mysql深度优化,,2. 存储引擎,MyISAMMysql深度优化2. 存储引擎,28,,,锁,事务,逻辑设计,物理设计,Mysql深度优化,,3. 业务设计,锁Mysql深度优化3. 业务设计,29,,,慢查询,索引,执行计划,SQL优化,Mysql深度优化,,4. 查询以及索引,慢查询Mysql深度优化4. 查询以及索引,30,,,1、基础知识,Linux,,,Linux注意事项,,,Linux基础之类,,,Linux Jdk1.8环境安装及操作指令,,,Linux Tomcat安装与停启,1、基础知识LinuxLinux注意事项Linux基础之类L,31,2、高性能架构,02,2、高性能架构02,32,,,2、高性能架构,D,C,B,A,分布式架构思维,分布式架构原理,分布式架构策略,分布式协调和分流,E,异步与消息中间件,F,缓存和NoSQL,2、高性能架构DCBA分布式架构思维分布式架构原理分布式架构,33,,,,,,,,,常见指标,如何提升并发,流式计算,2、高性能架构,常见指标2、高性能架构,34,,,分布式架构思维,2、高性能架构,,,,,,,,,,,,,架构师应具备的分布式知识,大型互联网架构演进过程,主流分布式架构设计详解,分布式架构思维2、高性能架构架构师应具备的分布式知识大型互联,35,,,,,,,,,大型互联网架构演进过程,架构师应具备的分布式知识,主流分布式架构设计详解,分布式架构思维,大型互联网架构演进过程分布式架构思维,36,,,分布式架构原理,2、高性能架构,,,,,,,,,,,,,,,,,,,,,CAP、Base理论及其应用,,,,,结构设计及业务驱动分化,系统监控、容灾、储存动态扩展,CDN加速静态文件访问,如何把应用从单机扩展到分布式,分布式架构演进过程,分布式架构原理2、高性能架构CAP、Base理论及其应用结构,37,,,分布式架构原理,,,,,,,,,,分布式架构演进过程,,,CAP、Base理论及其应用,结构设计及业务驱动分化,如何把应用从单机扩展到分布式,CDN加速静态文件访问,,系统监控、容灾、储存动态扩展,,分布式架构原理分布式架构演进过程CAP、Base理论及其应用,38,,,,,分布式架构策略,2、高性能架构,,分布式架构网络通信原理剖析,01,,,,通信协议中的序列化和反序列化,02,,,,基于框架的RPC技术、WebService、RMI、Hession,03,,,,深入分析ZooKeeper在disconf应用中心的应用,04,,,,基于zookeeper实现分布式服务器动态上下线感知,05,,,,深入分析Zookeeper Zab协议及选举机制源码解读,06,,,分布式架构策略2、高性能架构分布式架构网络通信原理剖析01通,39,,,,,2、高性能架构,分布式架构策略,,,03,Dubbo容错机制及高扩展性分析,,,02,基于Dubbo的分布式系统架构实战,,,01,Dubbo管理中心及监控平台安装部署,2、高性能架构分布式架构策略03Dubbo容错机制及高扩展性,40,,,,,,,,,分布式架构网络通信原理剖析,通信协议中的序列化和反序列化,基于框架的RPC技术、WebService、RMI、Hession,深入分析ZooKeeper在disconf应用中心的应用,基于zookeeper实现分布式服务器动态上下线感知,深入分析Zookeeper Zab协议及选举机制源码解读,分布式架构策略,分布式架构网络通信原理剖析分布式架构策略,41,,,,分布式架构策略,,,01,Dubbo管理中心及监控平台安装部署,,,02,基于Dubbo的分布式系统架构实战,,,03,Dubbo容错机制及高扩展性分析,分布式架构策略01Dubbo管理中心及监控平台安装部署02基,42,,,分布式协调和分流,2、高性能架构,,,,,,,,,,,,,Nginx高并发分流进阶实战,Zookeeper分布式环境指挥官,分布式协调和分流2、高性能架构Nginx高并发分流进阶实战Z,43,,,分布式协调和分流,A,Zookeeper分布式环境指挥官,Nginx高并发分流进阶实战,B,分布式协调和分流AZookeeper分布式环境指挥官Ngin,44,,,,,Zookeeper分布式环境指挥官,分布式协调和分流,,zk开发基础,,02,,协议及算法分析,,04,,zk的入门,,01,,zookeeper应用实战,,03,Zookeeper分布式环境指挥官分布式协调和分流zk开发基,45,,,Nginx高并发分流进阶实战,分布式协调和分流,,,nginx安装,,,正反向代理,,,nginx进程模型,,,location规则,,,日志配置及签个,,,核心配置结构,Nginx高并发分流进阶实战分布式协调和分流nginx安装正,46,,,rewrite的使用,动静分离,跨域配置,缓存配置,Gzip配置,https配置,横向扩展带来的问题,分布式协调和分流,,Nginx高并发分流进阶实战,rewrite的使用分布式协调和分流Nginx高并发分流进阶,47,,,,,Nginx高并发分流进阶实战,分布式协调和分流,LVS,01,,keepalived,02,,Nginx高并发分流进阶实战分布式协调和分流LVS01kee,48,,,异步与消息中间件,2、高性能架构,D,C,B,A,概述,ActiveMQ消息中间件,RabbitMQ消息中间件,RocketMQ消息中间件,E,Kafka百万级吞吐实战,异步与消息中间件2、高性能架构DCBA概述ActiveMQ消,49,,,异步与消息中间件,,概述,,,ActiveMQ消息中间件,,,RabbitMQ消息中间件,,,RocketMQ消息中间件,,,Kafka百万级吞吐实战,,异步与消息中间件概述ActiveMQ消息中间件RabbitM,50,,,异步与消息中间件,概述,,,,,,,,,,,,,,,,,,,,,,,,,,,,什么是消息中间件? 和RPC有何区别?,消息中间件(ActiveMQ、RabbitMQ、RocketMQ、Kafka)简介及对比,消息中间件使用场景介绍,异步与消息中间件概述什么是消息中间件? 和RPC有何区别?消,51,,,JMS规范,ActiveMQ使用,ActiveMQ高级特性和用法,企业级高可用集群部署方案,异步与消息中间件,,ActiveMQ消息中间件,JMS规范异步与消息中间件ActiveMQ消息中间件,52,,,异步与消息中间件,RabbitMQ消息中间件,,A,,E,,D,,F,,B,,C,Windows下安装和运行,Linux下安装与配置,消息发布时的权衡,原生Java客户端使用,消息消费时的权衡,,,,,,,AMQP规范和RabbitMQ基本概念,异步与消息中间件RabbitMQ消息中间件AEDFBCWin,53,,,RabbitMQ消息中间件,异步与消息中间件,,,消息的拒绝,,,控制队列,,,集群化与镜像队列,,,与Spring集成,,,消息的属性,RabbitMQ消息中间件异步与消息中间件消息的拒绝控制队列,54,,,异步与消息中间件,RocketMQ消息中间件,,,,,RocketMQ简介、环境搭建,,,,,RocketMQ HelloWorld示例、 重试策略讲解,,,,,RocketMQ 架构设计、双主双从集群环境搭建、顺序消费、事务消费,,,,,RocketMQ API使用简介、拉取机制,,,,,RocketMQ实战案例讲解,,,,,RocketMQ事物讲解,异步与消息中间件RocketMQ消息中间件RocketMQ简,55,,,Kafka百万级吞吐实战,异步与消息中间件,,,Kafka入门,,,Kafka的安装和配置参数,,,Kafka的集群,,,深入理解Kafka,,,整合Spring,,,Kafka的生产者和消费者,Kafka百万级吞吐实战异步与消息中间件Kafka入门Kaf,56,,,保证Kafka的可靠数据传递,异步与消息中间件,,Kafka百万级吞吐实战,保证Kafka的可靠数据传递异步与消息中间件Kafka百万级,57,,,Redis高性能缓存数据库,MongoDB,缓存解决方案实战,高可用数据储存,分布式常见常见方案实战,2、高性能架构,,缓存和NoSQL,Redis高性能缓存数据库2、高性能架构缓存和NoSQL,58,,,Redis初入门及介绍,Java客户端,Redis常用命令及多项目设计实战,数据一致性,Redis性能优化,Redis主从模式,缓存和NoSQL,,Redis高性能缓存数据库,Redis初入门及介绍缓存和NoSQLRedis高性能缓存数,59,,,,,Redis高性能缓存数据库,缓存和NoSQL,Redis持久化,01,,哨兵核心机制,02,,高可用集群,03,,Redis高性能缓存数据库缓存和NoSQLRedis持久化0,60,,,MongoDB,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,2,,,,3,,,,4,MongoDB入门,mongodb进阶,mongodb高级知识,最佳实践与注意事项,,,,,MongoDB1234MongoDB入门mongodb进阶m,61,,,nosql与sql使用场景分析,基础概念,MongoDB,,MongoDB入门,nosql与sql使用场景分析MongoDBMongoDB入,62,,,常用命令,快速入门,mongodo客户端驱动,增删改查与聚合,安全控制,MongoDB,,mongodb进阶,常用命令MongoDBmongodb进阶,63,,,存储引擎,索引,高可用,MongoDB,,mongodb高级知识,存储引擎MongoDBmongodb高级知识,64,,,缓存的概念,SpringCache的用法,缓存的一致性策略,缓存雪崩方案,缓存穿透方案,缓存和NoSQL,,缓存解决方案实战,缓存的概念缓存和NoSQL缓存解决方案实战,65,,MySQL高性能储存实战,Mycat进阶实战,FastDFS分布式文件储存实战,文件储存实战,文件同步实战,文件查询实战,分布式部署实战,高可用数据储存,MySQL高性能储存实战FastDFS分布式文件储存实战高可,66,,,,,,,,,事务概念,分布式事务解决方案,单店登陆方案,分布式任务调度方案,分布式常见常见方案实战,事务概念分布式常见常见方案实战,67,,,事务与锁,分布式事务产生背景,X/OpenDTP事务模型,标准分布式事务,分布式常见常见方案实战,,事务概念,事务与锁分布式常见常见方案实战事务概念,68,,,两阶段提交,BASE理论与柔性事务,TCC方案,补偿性方案,异步确保与最大努力型,分布式常见常见方案实战,,分布式事务解决方案,两阶段提交分布式常见常见方案实战分布式事务解决方案,69,,,单店登陆的问题背景,页面跨域问题,Session跨域共享方案,Session的扩展,分布式常见常见方案实战,,单店登陆方案,单店登陆的问题背景分布式常见常见方案实战单店登陆方案,70,,,Quartz调度的用法,Elastic-Job示例,分布式调度的疑难点,Quartz集群定制化分布式调度,分布式常见常见方案实战,,分布式任务调度方案,Quartz调度的用法分布式常见常见方案实战分布式任务调度方,71,,,响应时间(Response Time),吞吐量(Throughput),每秒查询率QPS(Query Per Second),并发用户数,2、高性能架构,,常见指标,响应时间(Response Time)2、高性能架构常见指标,72,,,,常见指标,,,同时承载正常使用系统功能的用户数量,并发用户数,04,,,每秒响应请求数。
在互联网领域,这个指标和吞吐量区分的没有这么明显,每秒查询率QPS(Query Per Second),03,,,单位时间内处理的请求数量,吞吐量(Throughput),02,,,,响应时间(Response Time),01,常见指标同时承载正常使用系统功能的用户数量并发用户数04每秒,73,,,如何提升并发,2、高性能架构,,,,,,,,,,,,,水平扩展(Scale Out),垂直扩展,提升单机处理能力,如何提升并发2、高性能架构水平扩展(Scale Out)垂直,74,,垂直扩展,提升单机处理能力,增强单机硬件性能,提升单机架构性能,例如:使用Cache来减少IO次数,使用异步来增加单服务吞吐量,使用无锁数据结构来减少响应时间,水平扩展(Scale Out),增加服务器数量,就能线性扩充系统性能,反向代理层的水平扩展,是通过“DNS轮询”实现的,站点层的水平扩展,是通过“nginx”实现的,服务层的水平扩展,是通过“服务连接池”实现的(注册中心),数据库水平拆分方式,负载均衡,如何提升并发,垂直扩展,提升单机处理能力水平扩展(Scale Out)如何,75,3、高可用,03,3、高可用03,76,,3、高可用,3、高可用,77,4、性能优化,04,4、性能优化04,78,,4、性能优化,4、性能优化,79,5、系统安全,05,5、系统安全05,80,,5、系统安全,5、系统安全,81,6、微服务架构,06,6、微服务架构06,82,,6、微服务架构,6、微服务架构,83,7、开源框架知识点,07,7、开源框架知识点07,84,,7、开源框架知识点,7、开源框架知识点,85,8、团队协作开发,08,8、团队协作开发08,86,,8、团队协作开发,8、团队协作开发,87,感谢聆听,感谢聆听,88,。
