当前位置: 首页 > news >正文

怎样找网站国内时事新闻2021最新

怎样找网站,国内时事新闻2021最新,wordpress 创建网站,个人备案网站做什么MQ MQ消息中间件 问题引出与MQ作用 常见面试问题#xff1a;面试官常针对项目中使用MQ技术的候选人提问#xff0c;如如何确保消息不丢失#xff0c;该问题可考察候选人技术能力。MQ应用场景及作用#xff1a;以京东系统下单扣减京豆为例#xff0c;MQ用于交易服和京豆服…MQ MQ消息中间件 问题引出与MQ作用 常见面试问题面试官常针对项目中使用MQ技术的候选人提问如如何确保消息不丢失该问题可考察候选人技术能力。MQ应用场景及作用以京东系统下单扣减京豆为例MQ用于交易服和京豆服务通信。其主要作用是系统解耦和流量控制实现系统高可用如隔离上下游不稳定因素、服务降级还能在流量突增时削峰填谷 。 消息丢失问题 消息丢失环节消息从生产到消费分为生产、存储、消费三个阶段。生产阶段处理好返回值和异常可避免丢失存储阶段由MQ保证如broker做副本消费阶段接收消息后执行完业务逻辑再确认可防止丢失。 消息丢失检测在生产端给消息指定消息版本号通过拦截器注入消息消费端用拦截器检测版本连续性或消费状态实现不侵入业务代码的消息检测。 解决方案MQ的可靠消息投递机制 消息重复消费问题 问题转化消息重复消费问题可转化为消费端幂等性问题。实现方案以扣减京豆为例在数据库建消息日志表含消息id和执行状态字段消费消息前检查是否已存在避免重复执行实现幂等操作。还可基于关系数据库实现唯一约束方案。全局唯一ID生成解决消息丢失和重复消费问题需掌握全局唯一ID生成技术如数据库自增主键、UUID、Redis、Twitter Snowflake算法等选型要结合业务平衡考虑作者倾向Snowflake算法并会改造以适应业务。 消息积压问题 问题分析消息积压反映性能问题主要出在消费阶段。因为消息发送后才可能积压且消息队列单节点存储性能较高不易出现问题。解决思路现场突发问题时临时扩容消费端数量并降低非核心业务抗住流量排查消费端业务逻辑问题通过监控日志分析若消费端处理能力不足水平扩容消费端同时同步扩充分区数量确保消费者实例数和分区数相等如Kafka中一个分区只能被一个消费者消费增加分区可提高消费能力。 总结与思考 重点回顾总结MQ消息队列热门问题解决方案包括保证消息不丢失了解各阶段丢失情况、监控及基于可靠消息投递解决、不被重复消费实现消费端幂等性、处理消息积压按应急处理、排查优化、扩容的思路。强调面试时展示解决问题的思维过程更重要。拓展知识应聘基础架构还需掌握消息中间件其他知识如选型、模型区别、高吞吐原理、序列化协议及内存管理等。思考题卡夫卡实现高性能的方式鼓励观众留言讨论。 MySQL MySQL索引原理与优化 索引在面试中的重要性面试常考察数据库知识索引原理和优化方法是重要切入点。以电商订单中心系统为例为避免文件排序应建立status和create time的组合索引。面试官还会追问索引底层数据结构、InnoDB选择B树的原因、查看执行计划、索引失效情况及优化方法等问题。MySQL索引原理MySQL常用索引有B树索引、哈希索引、全文索引InnoDB是默认存储引擎且常用B树索引。创建表时若有主键则用其作为主键索引若无InnoDB会生成隐藏主键。通过创建商品表并插入数据展示B树索引的构建和查询过程。B树节点含多个子节点父节点数据值会出现在子节点中叶子节点包含所有数据值且形成链表。查询数据时B树自顶向下查找如查询数据值15仅需三次IO操作体现其查询效率优势。若通过辅助索引查询需先找到主键值再通过主键索引查询此过程称为回表。B树索引的优势与其他索引类型相比B树只在叶子节点存储数据单个节点数据量小相同磁盘IO次数可查询更多节点叶子节点的双向链表结构适合范围查找而B树不具备B树搜索复杂度为O(logdN) 数据量达千万级别时树高仍能维持在3 - 4层磁盘IO操作次数少优于二叉树哈希表适合等值查询不适合范围查找B树适用场景更广泛。索引执行计划通过查看执行计划如possible key、key、key length等参数可分析索引详情其中type字段描述数据扫描类型不同扫描类型效率不同。以like查询为例分析索引失效原因当查询优化器预估走索引代价比全表扫描大时会放弃使用索引。常见索引优化方法 前缀索引用字段前几个字符建立索引可减少索引字段大小提高查询速度但存在局限性如无法用于order by、不能用作覆盖索引。覆盖索引查询字段在B树叶子节点都能找到可避免回表减少IO操作如建立商品id、名称、价格的组合索引查询这几个字段时无需回表。联合索引遵循最左匹配原则建立时应将区分度大的字段排在前面提高索引过滤概率。区分度是字段不同值个数除以表总行数性别区分度小不适合建索引或放联合索引前列ID区分度大适合建索引或放前列。 MySQL事务隔离级别和锁 MySQL事务隔离级别与锁机制基础 事务隔离级别用于多线程操作数据库时确保数据准确性分为读未提交、读已提交、可重复读和串行化读。读未提交隔离度低虽性能最高但会导致脏读、不可重复读和幻读实际项目很少使用读已提交解决了脏读问题但仍存在不可重复读和幻读可能可重复读是InnoDB引擎默认级别能解决脏读和不可重复读但幻读问题依旧存在串行化读隔离级别最高通过加锁实现性能最低 。锁机制概念锁机制分为悲观锁和乐观锁。悲观锁认为数据冲突可能性大利用select for update语句加锁避免数据意外修改乐观锁认为冲突可能性小借助CAS机制通过对比时间戳或版本号实现版本控制。 脏读、不可重复读和幻读详解 脏读脏读指读取到未提交事务的数据。并发事务A和BA读取并更新数据未提交时B读取到A更新后的数据若A回滚B读到的数据就是过时的这种情况仅在读未提交隔离级别下出现。不可重复读不可重复读是指事务A读取数据后事务B更新了该数据导致A再次读取时数据不一致。读未提交和读已提交隔离级别会出现此问题升级事务隔离级别可解决如MySQL InnoDB默认的可重复读级别。幻读幻读是在同一事务内相同查询语句不同时间执行得到不同结果集。解决幻读不能简单升级隔离级别MySQL InnoDB引入间隙锁面试时需掌握间隙锁及与行锁结合的相关知识。 死锁的产生与解决 死锁产生原因死锁多发生在多线程争抢资源时线程相互等待形成死锁状态。其产生有互斥、持有并等待、不可剥夺、循环等待四个必要条件只有四个条件同时满足才会发生死锁。死锁避免方法避免死锁可破坏产生条件如一次性申请所有资源破坏持有并等待条件申请不到资源时主动释放已占资源破坏不可剥夺条件按需申请资源按资源序号顺序申请破坏循环等待条件。 数据库领域应用开发者需掌握的内容及作业 需掌握内容从数据库领域应用开发者角度需掌握数据库设计基础基本范式、表视图索引外键等概念、数据类型使用、业务实体关系与数据库结构映射、ORM开发、数据库隔离级别4种隔离级别基础知识、MVCC和锁机制进阶内容、不同索引类型及底层结构算法、SQL优化调试技巧、利用索引、分析执行计划、数据库架构设计高并发场景解决方案如读写分离、分库分表。作业思考并回答在面试中如何回答好MVCC和乐观锁的区别。 MySQL 优化查询方案 MySQL在高流量场景下的优化问题 缓存的局限性在电商订单中心场景用Redis作MySQL缓存无法解决高流量问题因其缓存命中率低大量请求仍会到达数据库。读写分离的必要性互联网系统读写请求差异大读写分离是提升MySQL并发的首选方案通过将MySQL集群拆分成主从结构实现。 应对面试官套路的准备要点 架构设计思路读多写少场景下缓存有局限读写分离才是提升系统并发能力的关键。主从复制原理深入了解MySQL主从复制的原理、问题及解决方案其依赖bin log分为写入bin log主库、同步binlog、回放binlog三个阶段。技术认知抽象从实践出发做到技术的认知抽象从方法论层面看待设计。 MySQL主从复制的详细过程 集群结构一个主库通常搭配2 - 3个从库主库收到事务请求后先写入bin log提交事务更新数据并响应客户端从库创建IO线程接收主库bin log日志写入中继日志并响应主库从库再创建回放线程读中继日志更新数据实现主从数据一致。复制模型MySQL主从复制有同步复制、异步复制、半同步复制三种模型。半同步复制介于同步和异步之间能降低主库宕机时的数据丢失风险。 解决MySQL主从复制延迟及扩展问题 延迟问题解决方案包括使用数据冗余注意参数大小影响、使用缓存会带来数据和缓存一致性问题、直接查询主库需谨慎避免影响主库性能。数据库使用变化及实现方式主从分离后数据库使用需区分主从库地址和读写操作。工程代码实现数据访问有两种方式一是提前配置数据源在代码逻辑中判断二是独立部署代理中间件如My Cat但存在性能损耗和运营复杂的问题。技术抽象能力中高级研发工程师面试时除掌握上述内容外还应展示技术抽象能力如理解复制状态机机制及其在MySQL主从复制中的应用许多存储系统或数据库都采用类似方法实现数据复制和备份恢复。 分库分表 分库分表问题引入 在业务发展、数据量增加及读写分离后写入压力增大导致数据库性能下降引出分库分表方案。分库分表常见策略有垂直拆分、水平拆分、垂直水平拆分。面试中不仅要知晓策略更要能阐述整体设计方案与技术实现思路。 分库分表场景与策略选择 分库分表场景数据量过大致使事务执行缓慢时考虑分表单库性能无法满足高并发需求时进行分库。垂直拆分依据数据业务相关性拆分常伴随系统架构调整可隔离业务数据、利于架构扩展但无法解决单一业务数据膨胀问题。水平拆分将单库表数据按规则拆分到多个库表如哈希取模把单表数据按哈希取模拆分到多个相同结构表中和范围分片按某字段区间拆分常见按商品所属品类分配 。范围分片可预估业务但存在数据分布不均和热点数据问题处理手段有垂直扩展提升单机处理能力和分配原数据灵活性高但实现复杂需保证分配原数据服务高可用。垂直水平拆分先垂直拆分不同类型数据到不同库再水平拆分使单表数据量合理提升性能。 分库分表后的数据查询问题分库分表后传统查询方式受限可通过将聚合查询数据同步到ES、单独存储计数数据、利用大数据技术处理报表数据等方式解决。new sql在面试中的应用及作业 new sql作为下一代存储技术具备高性能、高可用、弹性扩容且兼容SQL标准和保障事务等优势有可能取代MySQL。面试时可借此展示技术视野提前了解其数据库原理从与现有关系数据库区别切入讨论。作业思考数据库分片时商品关联表的处理方式。 文章目录 MQMQ消息中间件 MySQLMySQL索引原理与优化MySQL事务隔离级别和锁MySQL 优化查询方案分库分表 缓存Redis缓存常见问题 缓存 Redis Redis线程模型 面试回答要点回答Redis线程模型问题不能仅停留在单线程层面应补充相关知识如Redis并非完全单线程网络IO和读写操作由一个线程完成但持久化、集群同步等由其他线程执行。Redis单线程速度快的原因主要原因包括大部分操作在内存中完成且采用高效数据结构单线程模型避免多线程竞争和线程切换开销不会出现死锁问题采用IO多路复用机制处理大量客户端socket请求基于非阻塞IO模型读写流程不阻塞。不同版本线程模型特点Redis 4.0之前是典型单线程模型4.0之后增加多线程支持体现在数据异步删除功能上6.0之后采用多个IO线程处理网络请求但读写命令仍由单线程处理以提高网络请求处理并行度。 Redis数据持久化 持久化目的与方式Redis为防止内存数据随服务器重启丢失将数据存储到磁盘有AOF日志、RDB快照、混合持久化三种方式。AOF日志原理与特点AOF日志记录Redis收到的每一条命令以文本形式追加到文件中是写后日志先执行命令再记录日志。优点是避免记录错误命令且不阻塞当前写操作缺点是数据可能丢失写入磁盘时可能阻塞后续操作。RDB快照原理与考点RDB快照将某一时刻的内存数据以二进制写入磁盘做数据恢复时直接读入内存能快速恢复。考点包括RDB做快照时会阻塞线程Redis提供save和bg save命令默认使用bg save命令创建子线程操作避免阻塞RDB做快照时数据可修改利用bgcl子线程处理写操作时修改数据会复制副本子线程将副本写入RDB文件主线程可直接修改原数据。混合持久化Redis 4.0后增加混合持久化方式先以RDB方式写入文件再将后续命令以AOF格式存储既保证重启速度又降低数据丢失风险。 Redis高可用方案 主从复制是Redis高可用服务的基础保障实现一主多从模式可读写分离承载更多并发操作但主从服务器出现故障时需手动恢复。哨兵模式为解决主从复制故障手动恢复问题Redis增加哨兵模式可监控主从服务器并提供自动恢复功能。Redis集群Redis Cluster是分布式去中心化运行模式在Redis 3.0版本推出。采用哈希槽处理数据和实例之间的映射关系一个分片集群有16384个哈希槽。哈希槽映射到具体Redis实例有平均分配使用cluster create命令创建集群时自动分配和手动分配使用cluster meet等命令手动创建连接并指定哈希槽个数两种方案能提高Redis服务读写性能 。 缓存常见问题 缓存设计问题引入及面试套路 基于上一集redis原理学习本集从应用案例切入引出缓存雪崩、并发、穿透等常见设计问题。面试中常给定场景让候选人找出问题并提供解决方案以电商平台商品详情页缓存问题为例展开后续探讨。 缓存穿透问题及解决方案 问题查询特定key时缓存和数据库都不命中每次都查询数据库若被恶意利用会使数据库压力剧增甚至当机。解决方案给指定key预设默认值如空字符串业务代码据此判断是否查询数据库避免无效请求穿透缓存到数据库。 缓存并发问题及解决方案 问题缓存失效时多个客户端并发请求同一key都查询数据库并更新缓存增加数据库压力且占用缓存资源。解决方案客户端请求先读缓存未命中则用redis的setnx方法设置锁定状态设置成功的请求查询数据库并更新缓存设置失败的请求等待后重新查询确保同一时间只有一个请求操作数据库和缓存。 缓存雪崩问题及解决方案 问题开发中常将缓存过期时间设为固定常量大量缓存key同时过期高并发请求下会使数据库压力瞬间增大引发缓存雪崩。解决方案一是随机打散缓存失效时间在原失效时间基础上加随机值二是设置缓存不过期通过后台服务更新缓存数据可避免雪崩和一定程度上的并发问题。 动态缓存热点数据策略设计 场景在电商平台只缓存用户经常访问的top1000商品。策略通过缓存系统的排序队列按商品访问时间排名定期过滤排名靠后的商品并从数据库读取新商品加入。请求到达时先从队列获取商品id再从另一缓存结构读取商品信息。 缓存操作与业务分离架构设计 问题缓存操作与业务代码耦合会导致代码可维护性差不符合高内聚低耦合设计原则。解耦思路通过mysql binlog、Kafka、MQ实现解耦。如用户添加配置信息到mysqlbinlog记录更新Kafka获取日志解析后通过MQ发送数据应用系统将MQ数据更新到redis。 总结与作业布置 总结推荐预设值方案解决缓存穿透用redis的setnx方法解决缓存并发通过随机打散失效时间或设置缓存不过期解决缓存雪崩。同时强调使用缓存要考虑缓存与数据库一致性、缓存容量限制、数据大小等问题。作业要求用redis实现一个计数器。
http://www.dnsts.com.cn/news/91607.html

相关文章:

  • 个体户网站备案关于网站开发中网站上传
  • 阜宁网站建设山东建设厅官网
  • 番禺网站建设gzhchl广西建设工会网站
  • 多说评论插件对网站优化信息服务类网站建设方案
  • 去哪接单做网站门户网站如何帮企业做宣传
  • 长沙做旅游网站多少钱网站美工
  • 爱做网站视频阳西网站seo
  • 有什么网站做投标设计营销方案格式
  • 西安营销网站建设涉及部署未备案网站
  • 建设部网站官网建筑施工合同杭州seo公司哪家好
  • 眉山网站建设网站目录怎么做的
  • seo网站设计费用html5网站建设
  • 毕业答辩企业网站开发的问题深圳市网络公司
  • 企业站网站建设制作平台互联网信息服务平台
  • 蓝色网站欣赏网站显示建设中页面
  • 广州17网站一起做网店小男生和大人做的网站
  • 商城网站htmlseo搜索引擎优化案例
  • 地图网站 源码品牌网站建设流程图
  • 中国最厉害的网站建设公司苏州网站制作价格
  • 订单网站模板kloxo网站压缩
  • 假的建设银行网站大庆网页制作公司电话
  • ii6创建网站做淘宝客网站域名是别人的
  • 将门户网站建设深圳高端画册设计公司
  • 深圳网站建设犀牛云phpcms 网站路径
  • 在线制作图片网站有哪些什么样的笔记本电脑适合网站开发
  • excel做网站手机网站排行榜
  • 上海营销网站设计优秀包装设计网站
  • 网站开发小图标大全吉林省建设安全信息网官网
  • 开福区网站建设中国内有奖活动第一分享平台
  • seo网站推广下载我想做网站卖衣服做