第1周 |「知识星球」高质量答疑 7 个问题

栏目: IT资讯 · 发布时间: 7年前

内容简介:如果对本文的内容有疑问,请在文章留言区留言,谢谢。
第1周 |「知识星球」高质量答疑 7 个问题

点击上面  蓝色字体 关注我们

技术  /  架构  /  职场  /  面试   /  内推

非常感谢「搜云库技术分享」小伙伴们的高质量技术交流。 这里,我使用「知识星球」沉淀「2019年的第1周」高质量的答疑内容。本周与你一起精进 7 个问题,请细心阅读。 如果对您有帮助的话,可以帮忙转发与分享。同时,欢迎加入「技术架构分享群」与「 搜云库技术分享,知识星球 」共同探讨,一起进步, 文末扫描关注 ,或公众号回复「 加群 」。

在这里,特别感谢星球合伙人:

@卷小毛,@豆哥,@琳茹,@无悔,@熊姐,@帅超,@Mask,@凡羊羊(排名不分前后)

对磊哥的支持,加入搜云库技术分享的大家庭!

惜小天 提问:

第1周 |「知识星球」高质量答疑 7 个问题

消息中间件如何实现高可用,削峰,异步请求是怎么用中间件处理呢?

第1周 |「知识星球」高质量答疑 7 个问题

星球合伙人:龙的凤影

回答:

消息中间件是如何实现高可用、消峰、异步请求的,我简单说下吧。

1、 实现高可用 :消息中间件,可以部署多个,部署在不同的物理机器上,做集群,当其中某节点宕机了,剩余的节点照样能够正常工作。

2、 削峰 :当流量出现急剧上升,系统的处理能力达到瓶颈的时候,通过消息队列,逐渐放行消息,减缓系统的处理频率,从而不至于将系统的CPU耗尽,从而使请求依次处理,达到削峰效果。

3、 异步 :系统之间的服务,原本是直接的同步调用的,但是现在使用消息中间件后,可以实现异步调用,例如系统A、B、C,系统生产的消息不仅可以提供给B系统,还可以扩展到C系统,我生产者A不需要修改代码逻辑,只负责生产消息,而且生产者不关心你是否有没有消费、啥时候消费;而消费B和C,我们只需要订阅生产的消息,到时候消费消息即可,有消息就消费。

一个经典例子:

当一个用户注册的时候,之前是当用户在页面进行填入信息注册时候,数据写入数据库(100ms),同步调发送邮件注册服务(100ms)和调用发送注册短信(100ms),当一系列操作都成功后,才返回到前台给客户[共花300ms]。 而加入消息中间件之后,用户在页面进行填入信息注册时候,数据写入数据库(100ms),直接返回前端给客户注册成功,在数据写入数据库的同时,可以把调发送邮件注册服务(100ms)和调用发送注册短信(100ms)的消息推送到消息中间件上,由对应的消费服务进行消费那么整个注册过程,则能由[300ms]缩短到[100ms])。

当然,消息中间件存在着许多的缺点:

1、MQ宕机了怎么办? 2、MQ发送消息过程中消息丢失? 3、使用MQ,系统更加复杂性了?

惜小天 提问:

第1周 |「知识星球」高质量答疑 7 个问题

为什么采用G1收集器而不是cms收集器加seial收集器,堆大小如何设计比较合适,老年代和年轻代分配比例,基于什么原理算法给出最优方案?

第1周 |「知识星球」高质量答疑 7 个问题

星球合伙人:豆

回答:

首先声明,以下是个人的理解或者资料中的描述,并没有进行实践验证,可能并不严谨。

关于CMS收集器与G1收集器,我们先来看一下他们的区别。大家都知道CMS因为追求最短回收停顿时间采用的是标记-清除算法,这种算法会产生大量的空间碎片,当大对象进行分配时,往往会出现总体剩余空间很大但是连续的剩余空间不足的情况,从而引发Full GC,虽然CMS提供了一个参数可以控制快满时内存碎片的整理,但是相应的停顿的时间也会变长。

而G1做出的优化是:

1、对分代收集的改进,物理意义上不再隔离young与old,而是分为了Region区,虽然还有young和old的概念,但是他们不需要连续的存储,把内存化整为零并且不需要配合其他收集器就能独立管理整个堆。

2、G1虽然和CMS类似追求短的回收停顿,但是G1更关注于设立一个可预测控制的停顿时间,此时我们就可以控制垃圾回收时间避免应用雪崩现象(因为分为一个个的Region,所以不用在整个堆中进行垃圾收集,而是根据优先级,对优先级大的Region进行回收)。

3、G1整体上采用的是标记-整理算法(虽然两个Region是基于复制法),所以避免了CMS空间碎片的问题。

虽然j9都是默认G1收集器的了,但是并不是说G1就一定优化于CMS,现在市面上使用比较多的应该还是CMS+ParNew这种,G1收集器内部实现逻辑复杂(从提出paper到推出使用用了大约8年时间,现在还在优化,相信会越来越强并逐渐取代CMS的)。根据大佬们的测试,G1在小堆里的表现并没有比CMS好(此处R大推荐的8G),CMS在8G以下的堆中表现的比G1更加的稳健。G1适用于多CPU、大内存、低GC停顿要求、产生大量内存碎片需要整理压缩这几种情况。

关于堆大小的设置,假设你设置了一个2G的堆内存,你还要考虑你的线程占用的内存-线程栈(默认1M * 线程数,考虑永久代大小256M(j8之前),考虑二进制代码占用空间(48到240M不等),如果你使用了netty或者堆外缓存,你还要考虑堆外内存的大小(默认最大值约为堆内存大小)。综合下来,你设置一个2G大小的堆,要预留的内存空间为3.5-5.5G左右(还要预留一些供操作系统使用)。

老年代和年轻代的比例,是SUN官方根据大量研究、实践、调优得出的适合大部分情况的比例,比例的大小可以参看下HotSpot官方的调优白皮书

当然这个情况也不是绝对的,如果你的项目很多对象生命周期都比较短暂,你可以适当调整一下比例让老年代小一些,但是尽量要避免Full GC

蔡 提问:

第1周 |「知识星球」高质量答疑 7 个问题

现在工作3年了,做的项目一般都是单点应用,出去找工作问项目经历,没做过高并发这种项目,怎么做准备呢?

第1周 |「知识星球」高质量答疑 7 个问题

星球合伙人:卷小毛

回答:

你说你工作了三年,一直在做单点应用。其实单点应用也有很好玩的东西,我说的可以使说应用很多东西的了。

一、代码的思想

需求分析》应用设计》代码编写》后期重构

1、需求分析

我们的技术总是围绕着需求去走,但是我们一定要完完全全跟着需求走吗?可能有一些需求多多少少有些瑕疵。我们能不能从中优化需求,解剖需求呢?从而达到,产品想要的效果,也方便我们后期的维护和拓展。需求不只是看在当下!

2、应用设计

一个好的设计,是从需求中解剖出来的。如果我们一开始拿到需求,就在那里忙前忙后的。你会发现后期的维护会给你带来无尽的麻烦。解剖需求我们要从多个角度去分析,去拓展。画图,构思出整个代码功能的架构图。这对你未来的路会有好处。

3、代码编写

我自己的信条是 多重构,多封装,多共用。从而以少量代码快速完成多模块代码设计。这样会给你后期带来很好的体验。别人在优化BUG的时候,你只要找到相关问题,优化完后。有充足的时间去完成自己的事情。 重构,不只是第4步(后期重构)开始做的,在你第2步(应用设计)和第3步(代码编写)中就要带有这个思想了。

4、后期重构

当你接触一些新技术的时候,你就要回顾以前所写的代码,是否能应用!若是能,那就重构优化他,对比原有的代码。能否给你带来较好的效果

二、技术的玩

我所说的玩,不是玩游戏那种。但是你也可以当成玩游戏,过副本 1.业余时间学习后,要实践,把固定死的写法。玩出另一个花样来,或许能给你带来意想不到的效果 2.对新技术的追求,不要觉得他有难度就放弃了。我们工作不就是为了自己技术得以提升。但是工作上得到的并不多。需要自己去开拓边疆,打怪兽。这样我们的装备才会更好。

做到上面两点的话,你会比别人走的更远。代码是死的,技术也是玩出来的。在玩的时候,你自己能否有那种思想很重要。不要固定死自己的思维

更多向磊哥的提问

想看磊哥的回答, 限时免费 进知识星球查看回答

惜小天 提问:

第1周 |「知识星球」高质量答疑 7 个问题

磊哥可以提供一些关于mycat面试题和原理资料吗?

第1周 |「知识星球」高质量答疑 7 个问题

不停奔跑提问:

第1周 |「知识星球」高质量答疑 7 个问题

磊哥,最近我一直在为准面试做准备,看了好多资料,现在感觉准备的一点头绪都没有了,因为上家公司是外包公司,用的技术也是很老旧,对于现在面试中问的高并发,分布式等等都没有怎么涉及过,这种情况我应该如何准备面试呢?

第1周 |「知识星球」高质量答疑 7 个问题

:neutral_face: 微笑提问:

第1周 |「知识星球」高质量答疑 7 个问题

磊哥,我是名实习生,我所在的公司用ssh,项目业务逻辑特别简单,每天无所事事,也无法离职,该怎么提升自己,能不能给个方向?

第1周 |「知识星球」高质量答疑 7 个问题

:neutral_face: 微笑提问:

第1周 |「知识星球」高质量答疑 7 个问题

面试的时候该怎么介绍项目经验?

第1周 |「知识星球」高质量答疑 7 个问题

搜云库技术团队,欢迎广大技术人员投稿

投稿邮箱: admin@souyunku.com

如果对本文的内容有疑问,请在文章留言区留言,谢谢。

限时:免费进星球

限时免费加入 ,已经有 1400 + 人了

星球介绍: 技术,资讯,资源,分享,职场,面试,答疑

星球是为了帮助公众号和博客粉丝更好更近的沟通,这里会有最新的技术文章分享,技术答疑,职场面试等相关问题交流沟通。

第1周 |「知识星球」高质量答疑 7 个问题

微信识别二维码, 限时免费加入

公号回复关键字

回复: 【进群】

「技术架构分享群」 

回复:

【内推】 十大热门城市,程序员 作内推群   回复: 【1024】 送2019最新  4000G  

架构师视频 

新资料、面试题、等其他资料,进群找群主

更多技术干货


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Spark SQL内核剖析

Spark SQL内核剖析

朱锋、张韶全、黄明 / 电子工业出版社 / 2018-8 / 69.00元

Spark SQL 是 Spark 技术体系中较有影响力的应用(Killer application),也是 SQL-on-Hadoop 解决方案 中举足轻重的产品。《Spark SQL内核剖析》由 11 章构成,从源码层面深入介绍 Spark SQL 内部实现机制,以及在实际业务场 景中的开发实践,其中包括 SQL 编译实现、逻辑计划的生成与优化、物理计划的生成与优化、Aggregation 算......一起来看看 《Spark SQL内核剖析》 这本书的介绍吧!

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具