现在的钱越来越难挣了吗?

Posted 正小厚

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了现在的钱越来越难挣了吗?相关的知识,希望对你有一定的参考价值。

最近小厚在朋友圈刷到这么一则消息:春季人才招聘会,全场只有1/4的摊位有企业参加,却挤得满满当当全是求职者。月薪只有三四千、待遇也不怎么好的文员岗位招聘海报旁边,却全是本科生甚至是研究生在问。这不得不让小厚感慨一句:“现在的钱,真是越来越难挣了。”

虽然钱不是万能,但没有钱是万万不能的。毕竟,咱们都是俗人,只有在保障基本生活的前提下,才能去谈理想。用一句网络梗来概括:“要恰饭的嘛!”

提到挣钱这个话题,小厚想到了一位特别可爱的童鞋:来自我们成都正厚测试班的闫同学。在入学时,正厚要求每位同学写上自己的人生格言,其他同学写得都是“一分耕耘一分收获”、“越努力越幸运”之类中规中矩的金句,只有这位闫同学“清新脱俗”,写的是:“挣钱才是王道”。

而在近3个月的学习之后,这位以“挣钱才是王道”为格言的闫同学顺利就业,拿下了10koffer,实现薪资飞跃。下面,就和小厚来看看这位闫同学的故事吧。

一、前途受阻,思考转行

闫同学本科学历,专业为市场营销。毕业之后,利用自己的专业知识,在一家互联网相关企业做数据分析岗位,也就在这时,他对IT产生了兴趣。经常和其他测试、开发岗位的同事共事,久而久之,闫同学也感觉到了自己和他们之间的差距。

首先是工资,明明工作强度也差不多,自己工资却比他们要低一大截。

其次是发展,数据分析这个岗位的天花板比其他岗位低,工作一年多后就已经定型了,学不到什么新东西,也没有多少上升空间。

最后是可替代性,数据分析岗位虽然接触一些技术,但总体而言还是偏文职,门槛不高。再加上AI发展,现在有些智能数据平台已经能自动分析,这份工作不久后可能会被程序替代。

为了自己的前途与钱途,经过综合考量,闫同学决定趁着年轻,迈出自己的舒适区,转到IT行业来。

二、寻找门路,相遇正厚

闫同学的专业是市场营销,和IT并不对口,想要转到IT岗位,就需要通过某种方式学习技术、积累项目经验。据闫同学本人所说,当时他也想过自学,但考虑到自己作为0基础纯小白没人带,自学不一定有效率。加上他觉得自己年纪也不小了,没有多少时间去试错,就更倾向于参加线下辅导。

一次偶然的饭局,闫同学从身边亲戚朋友那里了解到了正厚软件的项目实训。起初,闫同学并不是很信任正厚。一是网上关于培训毕业后找不到工作的新闻不少;二是培训时间就短短3个月,害怕进度太赶自己学不会;三是上万块钱的培训费用不是一笔小数目,一旦做出决定就要背负一定的经济压力。

虽然抱有一定的怀疑,但闫同学还是打算线下来正厚看看。“我当时去听了两天的课,也与那些同学们交流过,个人觉得正厚还挺靠谱的,各方面都很正规,给我的印象不错,于是我就报名了。”回忆起报名那天,闫同学说。

三、顺顺利利,高薪毕业

作为一名0基础文科生,闫同学的学习之路却意外得顺利。“可能最一开始的几天有点不太适应吧,但多谢老师和身边的同学,他们都在帮我……后面跟上节奏了就很快,一下子把所有的知识点串联起来,有一种豁然开朗、一通百通的感觉。其实IT也没有我一开始想象得那么难,很多文科的同学惧怕IT,可能是出于心理作用吧。”闫同学在采访中表示。

最令闫同学满意的还是正厚的服务,从老师到班主任再到就业顾问,所有人都非常负责。对于学员而言,只要服从管理,每天上课认真听讲认真学习,按照要求完成作业、设计项目,就够了,不需要再担心别的问题。遇到不懂的,老师可以随时答疑,闫同学经常能见到老师辅导学生到很晚。周末并不是老师上班时间,但如果有学生这个时候向老师提问,老师也会耐心解答,这让闫同学很安心。

课程结束后不久,闫同学就在就业老师的协助下匹配到了一个测试的岗位,经过笔试、面试的筛选,最终拿到这个10k的offer。

“我希望能够在这一行长久做下去,在工作中能更进一步,在技术的道路上越走越远。”这是闫同学在就业感言上的最后一句话。虽然说“挣钱是王道”,但我们也能看到这位少年心怀梦想,正要启航。

文章的最后,我们将最热烈的掌声献给闫同学!希望你能在岗位上再创辉煌!小厚永远挺你哦!

做了「负载均衡」就可以随便加机器了吗?

下面这个场景不知是否在你面前出现过:

开发Z哥对运维Y弟喊:“Y弟,现在系统好卡,刚上了一波活动,赶紧帮我加几台机器上去顶一下。”

Y弟回复说:“没问题,分分钟搞定”。

然后就发现数据库的压力迅速上升,DBA就吼了:“Z哥,你丫的搞什么呢?数据库要被你弄垮了”。

然后客服那边接框也爆炸了,越来越多的用户说刚登陆后没多久,操作着就退出了,接着登陆,又退出了,到底还做不做生意了。

这些问题背后都是由于一个「Session丢失」问题导致的。

一、什么是Session丢失

相信Session对大部分Coder来说应该都知道。它是为了将同一个用户的多次访问在系统中被识别为“同一个用户”而产生的概念。除此之外,还可以基于它来减少重复往DB或者远程服务处获取与该用户相关的信息,以起到提升性能的作用。

在我们做了负载均衡的场景中,如果选择的负载策略是hash策略,那么会使得Session产生一个副作用,这个副作用就如上面举的案例那样,用户一旦由于某种原因从原先访问服务器A变成访问服务器B,就会出现“登陆状态丢失”、“缓存穿透”等问题。

为什么hash策略会出现这个问题呢?首先有必要先了解一下hash是如何进行的。hash策略就是下图这样的一个散列函数。在函数不变的情况下,A永远对应01,B对应04,C对应08。

做了「负载均衡」就可以随便加机器了吗?

以nginx中的ip_hash策略来举个例子。因为我们认为正常情况下用户的ip不会在短时间内发生变化,所以当我们选择使用ip_hash策略进行负载均衡时,意味着期望同一个用户能够一直访问到同一台服务器上,就像下图这样,图中的hash函数是最简单的随意举例。

做了「负载均衡」就可以随便加机器了吗?

如此一来,我们只需要在这一台服务器上将这个用户相关的信息缓存在进程内,就能起到非常高性价比的提升性能的效果。

这时,客户端与服务端之间的相当于建立了一个信任,相互认识。这个信任就是「Session」。

但是,当我们加了一台服务器之后,事情就发生变化了,图中的hash函数是最简单的随意举例。

做了「负载均衡」就可以随便加机器了吗?

这个时候我们原先的预期就被破坏了。因为用户与序号0节点的链接变成了与序号3的链接,所以产生了前面提到的「Session丢失」问题。与此同时,在序号0节点上做的进程内缓存都无效了,而在序号3节点上又没有用户相关的任何缓存,导致大量数据需要从下游的DB或者远程服务处获取。你要知道,一旦涉及到网络通信,性能必然明显下降,I/O、序列化都是耗时的工作。更重要的是,一旦同时有大量用户产生这个情况,由于后端的DB和远程服务瞬时无法承载激增的高密度请求,可能会导致它挂起。这还没完,如果当前程序没有一些故障隔离或者降级策略,还会进一步产生蝴蝶效应,导致整个大系统响应缓慢。可谓“一颗老鼠屎坏了一锅粥”。

二、Nginx是如何来解决这个问题的

既然以nginx举例,还是从nginx开始聊。通过在nginx中引入nginx-sticky-module模块可以来解决这个问题。解决的整个过程如下。

做了「负载均衡」就可以随便加机器了吗?

可以看到,当client第一次进入到nginx匹配节点的时候,在给它分配一个节点的同时,会将这个节点的唯一标识进行md5后写入到cookie中一并返回,如果下次再发起请求的时候发现带有这个cookie值,就直接转发到该值所对应的节点上去。这个机制被专业的称之为「Session保持」。

虽然可以利用cookie来解决这个问题,但是cookie也有一个潜在的问题,如果客户端未开启cookie功能,这个机制就失效了。不过好在目前主流浏览器都是默认打开cookie的。

题外话:nginx是2004年发布的,在nginx-sticky-module出现之前的7年间也是nginx相比竞品HAProxy最大的一个短板,因为HAProxy支持Session保持。

三、Session保持的其它方案

除了cookie之外,还有2种方式也可以最终达到类似的效果。分别被称为「Session复制」、「Session共享」。

1、Session复制

这是最简单粗暴的方式。根据第一节的案例来看,导致问题的原因是节点3没有用户的Session。那么很容易想到,在节点3运行之前把Session相关的Cache数据复制过去呗。并且在多个节点之间持续保证数据的同步,也就是说,每一台节点上都存在每个用户的Session数据。

做了「负载均衡」就可以随便加机器了吗?

实现的方案有很多,特别是不同的宿主程序都或多或少提供了一些切入点,甚至是拿来即用的方案,如Tomcat的Delta Manager和Backup Manager、Tomcat和IIS的Filter机制等等,这里就不展开了。

此类方案的特点是:

优点:天然高可用,一部分节点宕机没事。因为每一个节点上存放着所有已连接用户的会话信息。

缺点:因为每台计算机的内存是有上限的,仅适用于会话相关的数据大小较小的场景。并且,由于多个节点之间需要同步数据,需要额外解决数据一致性问题。与此同时,随着节点越多,损耗越大(延迟、带宽等),有广播风暴风险。

2、Session共享

我们还可以通过将session信息存放到全局共享的存储介质中来达到一样的效果,如数据库、远程缓存等,这是一种中心化思想的解决方案。

做了「负载均衡」就可以随便加机器了吗?

此类方案的特点是

优点:不管节点怎么增加和减少,100%不会产生会话丢失。

缺点:每次读写请求都需要增加额外共享储存调用,增加了网络I/O、序列化等操作,性能明显下降。另外,用作共享的存储介质除了增加了额外的维护成本外,还需要解决单点问题,以免产生系统性风险。

同之前「Session保持」方案一起对比下各自的优缺点和适用场景。

做了「负载均衡」就可以随便加机器了吗?

分别用一句话概括一下这3个方案:

  • Session 保持。原来在哪还是去哪。

  • Session 复制。不管在哪都有一样的数据。

  • Session 共享。所有节点共用一份数据。

越大型的系统,最终都会往「Session共享」这个方案上走,因为只要再对这个共享存储做横向扩展,理论上就可以支撑无穷大的用户了。如Redis、一系列的NOSQL以及NEWSQL等。就像下面这样,集「规模大」、「高可用」、「效果好」于一身。

做了「负载均衡」就可以随便加机器了吗?

四、结语

现在你应该清楚了Session丢失问题,也知道了如何去应对他。但是,我们还需要明白一个事实:严格来说「Session保持」本质上是破坏了做「负载均衡」的初衷。举个极端点的场景:一共有10个会话连在了节点A上,并且都是活动中状态。那么这个时候哪怕增加一个节点B上线,只要没有新的会话进来,节点B上的活动连接数永远是0,并没有起到分担压力的作用。

但是,在系统的起步时期,其实用这样简单的方案也是极好的。

博文视点联合Java后端技术给大家送福利来啦!

↓↓↓

做了「负载均衡」就可以随便加机器了吗?


文末推广

↓↓↓

热门内容:

1、

2、

3、

4、

5、

6、

7、

8、

9、


以上是关于现在的钱越来越难挣了吗?的主要内容,如果未能解决你的问题,请参考以下文章

决胜未来职场的技能

三生三世,十里挑花‘’大数据爱我你够了吗?

Python纳入高考了吗

Python 打败 R 了吗?

职场发展之跟对老板有多重要

人工智能技术的黄金时代,真的来了吗?