Kafka

Spring Cloud学习之-什么是Spring Cloud?

纵饮孤独 提交于 2021-02-18 08:02:08
SpringCloud 什么是微服务? 要想学习微服务,首先需要知道什么是微服务?为什么会有微服务?相信看完架构的发展史读者就会明白 架构发展史 单体应用架构 如图所示:将所有的模块,所有内容(页面、Dao、Service、Controller)全部写入一个项目中,放在一个Tomcat容器中启动 适用于小型项目 优点:开发速度快,可以利用代码生成工具快速的开发一个项目 缺点:不易扩展,代码耦合度高,且不容错(当某部分出错后整个服务就会停止运行) 垂直架构 既然原来单体架构中代码耦合度高,不利于维护和运行,人们自然就想到将不同的内容分开。最简单合理的方式就是将系统按照功能划分成不同的模块,然后将各模块独立放入不同的Web容器中,这就形成了垂直架构 优点:代码耦合度降低,且不同模块之间可以独立运行。一旦某个模块压力过大,可以针对性的搭集群 缺点:模块之间有可能不是那么完全独立,导致实体类或者其他层代码不能复用,需要多出粘贴,不方便日后维护。如果直接通过HTTP调用又不是很合理。 分布式架构/分布式SOA架构 分布式架构顾名思义就是分散部署在不同的机器上的服务,一个服务可能负责几个功能,是一种面向SOA架构的,服务之间也是通过rpc来交互或者是webservice来交互的架构。从开发的角度看就是Controller层(服务消费者)和Service层(服务提供者)分成不同的项目

新年Aliyun面经分享:基础+项目+源码+高阶

≡放荡痞女 提交于 2021-02-18 01:12:36
眼看着春招就来了!所以就让我想起去年秋招之路,现在跟大家分享一下我的面试路程,希望也能帮助大大家!原本秋招差不多顺利结束了,几乎阿里、百度、美团、字节、滴滴等等的大厂我都有疯狂投岗面试。虽然结果是比较圆满的,不过Aliyun倒是给我留下了深刻的印象。原因?请往下看... Aliyun一面:MySQL+Redis+JUC+Kafka+项目 Aliyun二面:项目+Java+数据库+网络+高并发+基础 Aliyun三面:项目+源码 Aliyun四面:基础+项目+缓存+锁 问的是还挺多的,个人觉得也挺广泛的(毕竟面试造火箭,工作拧螺丝),还有一些没记住(脑容量有限~哈哈哈~)。以上只是大块方向,我们一起来看看具体的问题如何吧... 【文末有相关问题的解析】 Aliyun一面:MySQL+Redis+JUC+Kafka+项目 1. MySQL (1)MySQL数据量太大怎么办,如何分库分表 (2)binlog,读写分离,主从复制 (3)MySQL里的锁了解吗 2. Redis (1)主从复制 (2)分布式锁 (3)哈希槽,一致性哈希 3. JUC (1)锁 4. Kafka (1)高性能的原因 Aliyun二面:项目+Java+数据库+网络+高并发 1. 项目 (1)为什么选Flume (2)为什么选Kafka (3)数据哪来的 (4)如何给出推荐算法 2. JAVA (1

spark streaming checkpoint

て烟熏妆下的殇ゞ 提交于 2021-02-14 21:33:38
一个 Streaming Application 往往需要7*24不间断的跑,所以需要有抵御意外的能力(比如机器或者系统挂掉,JVM crash等)。为了让这成为可能,Spark Streaming需要 checkpoint 足够多信息至一个具有容错设计的存储系统才能让 Application 从失败中恢复。Spark Streaming 会 checkpoint 两种类型的数据。 Metadata(元数据) checkpointing - 保存定义了 Streaming 计算逻辑至类似 HDFS 的支持容错的存储系统。用来恢复 driver,元数据包括: 配置 - 用于创建该 streaming application 的所有配置 DStream 操作 - DStream 一些列的操作 未完成的 batches - 那些提交了 job 但尚未执行或未完成的 batches Data checkpointing - 保存已生成的RDDs至可靠的存储。这在某些 stateful 转换中是需要的,在这种转换中,生成 RDD 需要依赖前面的 batches,会导致依赖链随着时间而变长。为了避免这种没有尽头的变长,要定期将中间生成的 RDDs 保存到可靠存储来切断依赖链 总之,metadata checkpointing 主要用来恢复 driver;而 RDD数据的

2019年初的面试经历及总结

隐身守侯 提交于 2021-02-14 17:30:16
前言 说来话长,从18年下半年开始,就有了离职的念头。但由于18年年初时答应项目经理要再待一年,所以强压下心头的邪念,坚持着一直做到年底。这期间身兼各种工作-提数、排查线上问题、给各个省公司的人答疑解惑、与其他部门联系沟通、做公司一个内部配置平台的前端页面的开发,唯一做的很少的就是后台开发,咳咳,实在汗颜。干了几个月后发现状况不对,急需提升自己的开发水平,于是开始看起JVM原理(第二遍看)、Spring源码、mybatis源码,顺便了解了不少mysql相关的知识,像不同引擎对应的索引结构、事务隔离级别、B+树等。就在不断地自我膨胀与自我怀疑中,满怀期待又惴惴不安地迎来了这一波面试。 面试过程 整个的面试过程满是曲折。从春节假期开始到二月底结束,持续的时间不长,一共也就面了五家。春节假期前是支付宝负责保险模块的部门,春节假之后是OYO酒店,再然后是平安健康险、河马,最后面的是G7物联网。 年前面的支付宝这次面试纯粹是个意外,还没投简历就不知为何被猎头找上了,联系了阿里,答应着春节之后会安排电话面试。没成想阿里的办事效率奇高,当天下午就给我打来电话要求电话面试一波。没啥好推拖的,我就硬着头皮开始了我人生中第一次的阿里面试,问的东西现在看来也能答个七七八八,但当时由于刚从工作中解放出来,很多基础的知识点没有复习基本只剩一点印象,面试时心跳加快,面红耳赤,在我们北方零下好几度的乡村里

10小时,这回一次搞定 Kafka 源码!

时光怂恿深爱的人放手 提交于 2021-02-14 15:37:36
Kafka 因其优越的 特性广泛用于 数据传输、消息中间件的设计、开发和维护 等方面,也得到越来越多大厂(阿里、美团、百度、快手等)的青睐,很多 IT 界前辈更是在技术层面不断深挖。 最近有位后端三年的朋友在准备美团的面试,特意来咨询 Kafka 的面试题,怕自己不能 cover 住技术面。 这里 列出了 一些 大厂 面试官 高频的问题 : 为什么要用 Kafka 集群? kafka 如何不消费重复数据? Offeset 极限是多少?过了极限又是多少? 如何实现 exactly once? 不用 zk,怎么管理集群元数据信息? Kafka Producer 如何优化打入速度? 解释如何调整 Kafka 以获得最佳性能。 如果各位答不上来,那就得好好看下 Kafka 的源码了。 这里推荐一份 Kafka 进阶精品视频 —— 《 Kafka 生产者源码解析 》 (本号粉丝限时5天免费开放) , 能让你 系统理解 Kafka 底层原理,满足不同阶段的开发工作需 求 : 长期在小公司打拼,受限于业务,技术栈老旧,没有机会接触新技术; 想突破职业瓶颈,进入BAT等一线大厂; 想摆脱码农标签,转型技术管理或架构师,但技术薄弱难以服人。 别人跳槽薪资翻倍,自己却面试无果或涨幅不高。 视频将通过 实战项目 贯穿技术架构演进始末,用 通俗易懂 的方式 从 Kafka 底层源码设计 ,深度揭秘

云原生|消息中间件的演进路线

三世轮回 提交于 2021-02-13 09:39:22
Photo @ Julien Riedel 文 | 尘央 引言 本文以一张云进化历史图开场,来谈谈云原生时代消息中间件的演进路线,但本文绝对不是“开局一张图,内容全靠编”。 从虚拟化技术诞生以来,IaaS/PaaS/SaaS 概念陆续被提了出来,各种容器技术层出不穷。到 2015 年, Cloud Native 概念应运而生,一时间,各种云厂商,云服务以及云应用都加上了“云原生”前缀。 我们也一直在思考,传统的消息中间件需要做些什么才能加上云原生这个修饰词,这也是本文探讨的主题:传统的消息中间件如何持续进化为云原生的消息服务。 云原生消息服务 什么是云原生 首先来谈谈什么是云原生,云原生是一个天然适用于云计算的架构理念,实践云原生技术理念的应用可以最大化享受云计算的技术红利,包括弹性伸缩、按量付费、无厂商绑定、高 SLA 等。 应用在实践云原生技术理念时一般会遵循四个要素: 采取 DevOps 领域的最佳实践来管理研发和运维流程。 通过 CICD 工具链做到应用的快速迭代和持续交付。 采取微服务架构。 采取容器及相关技术进行应用的托管。 消息服务作为应用的通信基础设施,是微服务架构应用的核心依赖,也是实践云原生的核心设计理念的关键技术,通过消息服务能够让用户很容易架构出分布式的、高性能的、弹性的、鲁棒的应用程序。消息服务在云原生的重要性也导致其极可能成为应用实践云原生的阻塞点

云原生|消息中间件的演进路线

北城以北 提交于 2021-02-13 01:57:53
Photo @ Julien Riedel 文 | 尘央 引言 本文以一张云进化历史图开场,来谈谈云原生时代消息中间件的演进路线,但本文绝对不是“开局一张图,内容全靠编”。 从虚拟化技术诞生以来,IaaS/PaaS/SaaS 概念陆续被提了出来,各种容器技术层出不穷。到 2015 年, Cloud Native 概念应运而生,一时间,各种云厂商,云服务以及云应用都加上了“云原生”前缀。 我们也一直在思考,传统的消息中间件需要做些什么才能加上云原生这个修饰词,这也是本文探讨的主题:传统的消息中间件如何持续进化为云原生的消息服务。 云原生消息服务 什么是云原生 首先来谈谈什么是云原生,云原生是一个天然适用于云计算的架构理念,实践云原生技术理念的应用可以最大化享受云计算的技术红利,包括弹性伸缩、按量付费、无厂商绑定、高 SLA 等。 应用在实践云原生技术理念时一般会遵循四个要素: 采取 DevOps 领域的最佳实践来管理研发和运维流程。 通过 CICD 工具链做到应用的快速迭代和持续交付。 采取微服务架构。 采取容器及相关技术进行应用的托管。 消息服务作为应用的通信基础设施,是微服务架构应用的核心依赖,也是实践云原生的核心设计理念的关键技术,通过消息服务能够让用户很容易架构出分布式的、高性能的、弹性的、鲁棒的应用程序。消息服务在云原生的重要性也导致其极可能成为应用实践云原生的阻塞点

云原生时代消息中间件的演进路线

笑着哭i 提交于 2021-02-13 01:45:53
简介: 本文整理自作者于 2020 年云原生微服务大会上的分享《云原生时代的消息中间件演进》,主要探讨了传统的消息中间件如何持续进化为云原生的消息服务。 作者 | 周礼(不铭) 阿里巴巴集团消息中间件架构师 导读 :本文整理自作者于 2020 年云原生微服务大会上的分享《云原生时代的消息中间件演进》,主要探讨了传统的消息中间件如何持续进化为云原生的消息服务。 引言 本文以一张云进化历史图开场,来谈谈云原生时代消息中间件的演进路线,但本文绝对不是“开局一张图,内容全靠编”。 从虚拟化技术诞生以来,IaaS / PaaS / SaaS 概念陆续被提了出来,各种容器技术层出不穷。到 2015 年,Cloud Native 概念应运而生,一时间,各种云厂商,云服务以及云应用都加上了“云原生”前缀。 我们也一直在思考,传统的消息中间件需要做些什么才能加上云原生这个修饰词,这也是本文探讨的主题:传统的消息中间件如何持续进化为云原生的消息服务。 云原生消息服务 1. 什么是云原生 首先来谈谈什么是云原生,云原生是一个天然适用于云计算的架构理念,实践云原生技术理念的应用可以最大化享受云计算的技术红利,包括弹性伸缩、按量付费、无厂商绑定、高 SLA 等。 应用在实践云原生技术理念时一般会遵循四个要素: 采取 DevOps 领域的最佳实践来管理研发和运维流程; 通过 CICD

从零开始搭建后台管理系统(一)--创建SpringBoot项目

不打扰是莪最后的温柔 提交于 2021-02-12 18:58:42
最近我在搭建一个SpringBoot的后台管理系统,写到一半想起来博客好像很久很久没更新了,所以准备把这个项目的开发过程记录到博客系统里,这个系统现在已经集成了Mysql、Mybatis-Plus、Redis、Shiro、Druid、lombok。这个系统我开发了两个星期了,主要时间花在Shiro上了,现在Shrio使用Redis作为Catch和Session存储器,未来准备集成Kafka作为日志记录系统,把日志数据写到数据库里。 第一步我们要创建一个SpringBoot项目,我个人习惯使用IDEA,所以使用IDEA创建SpringBoot项目。 打开IDEA,点击File->New->Project。然后选择SpringInitializr,点next,配置项目信息。我自己本地装的还是JDK8,所以JavaVersion就选8。配置信息配置好之后,就要选择引用的包,我们到时候自己在pom文件里添加就行,继续next,配置项目名称。最后配置一下项目名称和创建地址,我们就搭建成了。 这个是项目的地址 https://github.com/Raindtop/Spring-Backstage,这个后台搭建的所有代码都在这里面。 来源: oschina 链接: https://my.oschina.net/u/4109273/blog/4952473

监控微服务

半世苍凉 提交于 2021-02-12 12:28:33
1、监控指标 1)qps,pv 2)响应时间。大多数情况下,可以用一段时间内所有调用的平均耗时来反映请求的响应时间。但它只代表了请求的平均快慢情况,有时候我们更关心慢请求的数量。P99 = 500ms,意思是 99% 的请求响应时间在 500ms 以内 3)错误率。错误率的监控通常用一段时间内调用失败的次数占调用总次数的比率来衡量,比如对于接口的错误率一般用接口返回错误码为 503 的比率来表示 4)cpu利用率,io读写量,内存,磁盘 2、监控系统原理 监控系统主要包括四个环节:数据采集、数据传输、数据处理和数据展示 1)数据采集:服务主动上报和代理收集 采样对系统本身的性能也会有一定的影响,尤其是采集后的数据需要写到本地磁盘的时候,过高的采样率会导致系统写入磁盘的 I/O 过高,进而会影响到正常的服务调用。最好是可以动态控制采样率,在系统比较空闲的时候加大采样率,追求监控的实时性与精确度;在系统负载比较高的时候减小采样率,追求监控的可用性与系统的稳定性。 2)数据传输: UDP 传输,这种处理方式是数据处理单元提供服务器的请求地址,数据采集后通过 UDP 协议与服务器建立连接,然后把数据发送过去 Kafka 传输,这种处理方式是数据采集后发送到指定的 Topic,然后数据处理单元再订阅对应的 Topic,就可以从 Kafka 消息队列中读取到对应的数据 3)数据处理: 放入es