PS:本系列是一个不定期分享的技术贴,主要分享一些最近阅读的技术资料及书籍和个人理解,大家一起交流,共同进步~(预计每周发一贴~)。emmmm 不定期更新(主要是看工作及健身之后是否有时间看资料~ ) 以下纯手码,结合自己感悟,如果大佬有不同的技术见解,欢迎进行一波友好而又亲切的思想碰撞!可以diss,可以吐槽,但是不可以进行人格侮辱~
Kafka介绍:
1.什么是消息队列?
谈到什么是kafka的时候,首先需要跟各位观众大佬们介绍一些基本的背景知识(如果有看过的话,可以跳过),首先kafka是一个消息队列(Message Queue),可能有些观众大佬们会比较好奇?这个东西为什么要存在,存在的意义是什么?咳咳,别急,慢慢来~
最最早期互联网技术架构模式及现在传统软件行业(小部分)采用的是最最经典的MVC架构,M:module 模型,View:视图展现层.C:controller控制器层。请求流程比较简单主要如图:
这样的架构乍一看是没有任何问题的,但是其实存在比较大的问题。
1.并发、请求高峰限制:当用户数请求过多或者并发量请求过大的时候,对于Controller层,其实压力不会有想象中的那么大,但是来一个用户就查询一次数据库,来一次查一次,数据库会因为并发问题导致数据库响应过慢,甚至崩塌。这样对外就无法提供服务。
2.耦合度太高:在技术架构上,主要目的就是减轻或者尽可能降低程序之间的耦合度。举一个现实生活中的例子来看,快递员送快递:快递员什么时候完成这一单或者是否能顺利完成,十分依赖于小明的相应速度。如果小明还没起床,听见敲门声再穿衣服开门,可能消耗很多时间。如果小明没在家呢?那就要配送失败了,如何判断配送失败呢?快递员需要判断等多久开门(超时时间),打电话小明判断是否在家(健康检查),最终郁闷的离开,下次再来一次(重试)。快递员直接与小明交互,对小明的状态强依赖,产生了耦合现象。
3.调用第三方服务限制:当某些服务处理速度过慢的时候,如果高峰流量同时打入的话,会造成服务不可用现象,比方说:快递员短信通知客户拿去快递,假设快递员手速足够快,一秒钟能够同时给1000个人发送短信(当然是不可能的啦),但是运行商只能每秒钟给200个用户发送短信,那剩下800个人就收不到短信提示了。这样是不可以的。所以消息队列就在这种情况下诞生了!