自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(300)
  • 收藏
  • 关注

原创 边缘计算 简述

  随着物联网越来越火,同时伴随着物联网而来的,就是各种概念和各种技术,其中一个就是边缘计算。边缘计算,是一种分散式运算的架构。在这种架构下,将应用程序、数据资料与服务的运算,由网络中心节点,移往网络逻辑上的边缘节点来处理。或者说,边缘运算将原本完全由中心节点处理大型服务加以分解,切割成更小与更容易管理的部分,分散到边缘节点去处理。边缘节点更接近于用户终端装置,可以加快资料的处理与传送速度,减少延迟。  举一个例子。比如有一款APP,用户在使用这款APP的时候,就会收集用户的信息,比如收集这个用户的年龄,

2021-11-10 11:39:06 768

原创 云容器引擎

  云容器引擎(Cloud Container Engine,简称CCE)提供高度可扩展的、高性能的企业级Kubernetes集群,支持运行Docker容器。借助云容器引擎,您可以在华为云上轻松部署、管理和扩展容器化应用程序。云容器引擎提供Kubernetes原生API,支持使用kubectl,且提供图形化控制台,让您能够拥有完整的端到端使用体验。集群(Cluster)集群指容器运行所需要的云资源组合,关联了若干云服务器节点、负载均衡等云资源。可以理解为集群是“同一个子网中一个或多个弹性云服务器(又称:

2021-11-08 10:47:37 1664

原创 VPC概述

  私有网络是针对公有云的基础网络(经典网络)来定义的一种概念。VPC(Virtual Private Cloud)是公有云上自定义的逻辑隔离网络空间,是一块我们可以自定义的网络空间,与我们在数据中心运行的传统网络相似,托管在VPC内的是我们在私有云上的服务器资源,如云主机、负载均衡、云数据库等。我们可以自定义网段划分、IP地址和路由策略等,并通过安全组和网络ACL等实现多层安全防护。同时也可以通过VPN或专线连通VPC与我们的数据中心,灵活部署混合云。  VPC主要是一个网络层面的功能,其目的是让我们可

2021-11-04 12:17:17 1212

原创 图计算 概述

  近年来,全球大数据进入加速发展时期,数据量呈现指数级爆发式增长,而这些大量数据中不同个体间彼此交互产生的数据以图的形式表现。注意,这里的“图”指的是数据结构,是针对“图论”而言的,而不是指图像。图G由节点V(vertice)与边E(edge)构成,我们一般表示为G(V,E)。图数据的典型例子比如网页链接关系、社交网络、商品推荐等。比如微信的社交网络,是由节点(个人、公众号)和边(关注、点赞)构成的图;淘宝的交易网络,是由节点(个人、商品)和边(购买、收藏)构成的图。如此一来,抽象出来的图数据构成了研究和

2021-11-03 15:41:42 1093

原创 异构计算简介

  异构计算技术由于能经济有效地获取高性能计算能力、可扩展性好、计算资源利用率高、发展潜力巨大,已成为并行/分布计算领域中的研究热点之一。  在异构计算系统上进行的并行计算通常称为异构计算。给出如下定义:异构计算是一种特殊形式的并行和分布式计算,它或是用能同时支持simd方式(单指令多数据流,能够复制多个操作数,并把它们打包在大型寄存器的一组指令集)和mimd方式(多指令流多数据流)的单个独立计算机,或是用由高速网络互连的一组独立计算机来完成计算任务。它能协调地使用性能、结构各异地机器以满足不同的计算需求

2021-11-02 12:03:42 847

原创 云服务器ECS

  云服务器(Elastic Compute Service, ECS)是一种简单高效、安全可靠、处理能力可弹性伸缩的计算服务。其管理方式比物理服务器更简单高效。用户无需提前购买硬件,即可迅速创建或释放任意多台云服务器。借助云服务器能够快速构建更稳定、安全的应用,降低开发运维的难度和整体IT成本,能够更专注于核心业务的创新。  云服务器的业内名称其实叫做计算单元。所谓计算单元,就是说这个服务器只能算是一个人的大脑,相当于普通电脑的CPU,里面的资源都是有限的。你要获得更好的性能,解决办法一是升级云服务器,

2021-10-30 11:28:25 1239

原创 Netty

目录Netty线程模型1. 单线程模型2. 多线程模型3. 主从多线程模型Netty线程模型  Netty通过Reactor模型基于多路复用器接收并处理用户请求,内部实现了两个线程池,boss线程池和work线程池,其中boss线程池的线程负责处理请求的accept事件,当接收到accept事件的请求时,把对应的socket封装到一个NioSocketChannel中,并交给work线程池,其中work线程池负责请求的read和write事件,由对应的Handler处理。1. 单线程模型  所有I/

2021-09-04 17:44:07 168

原创 PageCache

目录buffers和cached的区别:操作系统层提供了page cache,为什么还要在应用层加缓存?  page cache是针对文件系统的文件的缓存,在文件层面上的数据会缓存到page cache。文件的逻辑层需要映射到实际的物理磁盘,这种映射关系由文件系统来完成。当page cache的数据需要刷新时,page cache中的数据交给buffer cache来完成。  那么,buffer cache是对磁盘块的缓存,也就是在没有文件系统的情况下,直接对磁盘进行操作的数据会缓存到buffer ca

2021-09-04 15:12:03 567

原创 Linux常用命令

Linux相关【1】查看磁盘剩余空间df命令是linux系统以磁盘分区为单位查看文件系统命令格式:df -hldf -h:查看当前目录磁盘使用情况看内存使用情况:列出了所有的内存使用情况:$ cat /proc/meminfo( proc被称为虚拟文件系统,它是一个控制中心,可以通过更改其中某些文件改变内核运行状态,它也是内核提空给我们的查询中心,用户可以通过它查看系统硬件及当前运行的进程信息。)用于实时显示 process 的动态:top查看系统内存使用情况:free查看CPU使用情况

2021-09-01 17:19:48 342

原创 Maven

https://mvnrepository.com/Maven的核心概念①约定的目录结构【1】根目录:工程名【2】src目录:源码【3】pom.xml文件:Maven工程的核心配置文件【4】main目录:存放主程序【5】test目录:存放测试程序【6】java目录:存放java源文件【7】resources目录:存放框架或其他工具的配置文件②POM (Project Object Model,项目对象模型),pom.xml对于Maven工程是核心配置文件,与构建工程相关的一切设置都在这

2021-04-23 19:25:44 490

原创 Alibaba(实习准备)—SOFARPC学习总结

目录SOFARPC框架SOFARPC框架  在蚂蚁金服的分布式技术体系下,大量的技术产品(非网关类产品),都需要在内网,进行节点间通信。BOLT 提供了优秀的通信协议与通信框架,在 BOLT 的基础上,研发了自己的 RPC 框架,提供了负载均衡,流量转发,链路追踪,链路数据透传,故障剔除等基础能力。  RPC框架应该包含的几个部分:User、User-stub、RPC-Runtime、Server-stub、Server。当 Client 想发起一个远程调用时,实际是通过本地调用 Client-stu

2021-04-14 11:34:21 1572 2

原创 Spring

目录SpringIOC理论Spring配置依赖注入bean的自动装配使用注解开发使用Java的方式配置Spring代理模式AOP声明式事务Spring  Spring是一个开源的免费的框架(容器),Spring是一个轻量级的、非入侵式的控制反转(IOC)和面向切面编程(AOP)的框架,Spring支持事务的处理,对框架整合的支持。核心容器(Spring Core)  核心容器提供Spring框架的基本功能。Spring以bean的方式组织和管理Java应用中的各个组件及其关系。Spring使用B

2021-04-13 21:56:09 286

原创 云架构

目录云服务层云管理层云的4种模式  如上图所示云架构共分为服务和管理这两大部分。  在服务方面,主要以提供用户基于云的各种服务为主,共包含三个层次:其一是Software as a Service软件即服务,简称SaaS,这层的作用是将应用主要以基于Web的方式提供给客户;其二是Platform as a Service平台即服务,简称PaaS,这层的作用是将一个应用的开发和部署平台作为服务提供给用户;其三是Infrastructure as a Service基础架构即服务,简称IaaS,这层的作用

2021-04-12 22:57:05 4482 2

原创 LevelDB

目录LevelDB基础读写数据SSTable文件Cache版本控制LevelDB基础  LevelDB是Google开源的持久化KV单机数据库,具有很高的随机写,顺序读/写性能,但是随机读的性能很一般,即LevelDB很适合应用在查询较少,而写很多的场景。LevelDB应用了LSM (Log Structured Merge) 策略,lsm_tree对索引变更进行延迟及批量处理,并通过一种类似于归并排序的方式高效地将更新迁移到磁盘,降低索引插入开销。LevelDB具有以下特点和限制:特点:1、key

2021-04-09 11:25:29 385

原创 Flink

目录N0.1Flink 中的核心概念Flink与Spark Streaming的区别Flink 的组件栈Flink编程模型Flink分区策略Flink SQL解析No.2第一部分:Flink 的整体介绍、核心概念、算子等第二部分:Flink 的数据传输、容错机制、序列化、数据热点、反压等实际生产环境中遇到的问题。Job 提交流程、数据交换、分布式快照机制、Flink SQL 的原理等N0.1Flink 中的核心概念  Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。

2021-04-08 16:25:16 283

原创 HBase读写缓存

目录读写缓存BlockCacheLRUBlockCacheSlabCacheBucketCache读写缓存  HBase上RegionServer的cache主要分为两个部分,分别是memstore&blockcache,其中memstore主要用于写缓存,而blockcache用于读缓存。  当数据写入HBase时,会先写入memstore,RegionServer会给每个region提供一个memstore,memstore中的数据达到系统设置的阈值后,会触发flush将memstore中

2021-03-15 10:10:08 1601

原创 OPS and So on.

目录malloc是如何分配内存Linux下发信号用命令行怎么实现malloc是如何分配内存  malloc分配内存空间实际上并不是我们想的直接到内核中拿一块内存过来用。也不一定访问内核空间。malloc是在userspace的C库函数,它的工作基本在userspace中完成。它只是向glibc请求内存空间(虚拟地址空间),相当于glibc帮助进程来管理已经分配的内存地址空间。即glibc持有一定量的属于进程的内存地址空间(注意不是实际的物理内存空间)。主要是初始分配或者通过brk和sbrk或者mmap向

2021-03-13 19:59:39 339

原创 Spring Boot

目录SpringBoot的介绍Spring和SpringBoot比较Spring Boot的配置加载顺序Spring boot 的配置文件Spring Boot 的核心注解SpringBoot的介绍  Spring框架为开发Java应用程序提供了全面的基础架构支持。它包含如依赖注入和开箱即用的模块,这些模块可以大大缩短应用程序的开发时间。例如,在Java Web开发的早期阶段,需要编写大量的重复代码来将记录插入到数据源中。但是通过使用Spring JDBC模块的JDBCTemplate,我们可以将它简化

2021-02-25 23:21:40 267

原创 Kafka and So on.

Kafka消息顺序消费Kafka分区的目的• 分区对于 Kafka 集群的好处是:实现负载均衡• 分区对于消费者来说:可以提高并发度,提高效率Kafka如何做到全局消息有序:  一个topic、一个分区,虽然保证全局有序,但是生产性能下降,与Kafka分区原意相违。Kafka是无法保证全局的消息顺序性的,只能保证主题的某个分区的消息顺序性。Kafka中的每个 partition 中的消息在写入时都是有序的,而且单独一个 partition 只能由一个消费者去消费,可以在里面保证消息的顺序性。但是分

2020-11-18 15:40:12 275

原创 Spring Bean的生命周期

顺丰科技,贝壳找房,菜鸟网络,快手科技,京东,网易云,一点资讯,有赞,VIPKID,小米,腾讯pcg后端,跟谁学,滴滴,美团,58转转,美的,哔哩哔哩。拼多多,欢聚,搜狗,映客直播,携程,柠檬微趣,老虎证券,科大讯飞,爱奇艺,携程,4399,小红书等等好多。猿辅导,百度,作业帮,好未来,搜狐,海康威视等等。网易雷火,网易游戏,虎牙,斗鱼,搜狐畅游,触宝,用友,度小满金融等。...

2020-11-17 21:51:19 1956

原创 Token解析

  定义:Token是服务端生成的一串字符串,作为客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。  使用目的:Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。基于 Token 的身份验证使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录。流程是这样的:1、客户端使用用户名跟密码请求登录2、服务端收到请求,去验证用户名与密码

2020-10-27 15:10:45 6989 1

原创 三色标记法

  垃圾回收算法包括:标记-清除、标记-复制、标记-整理。在此基础上可以增加分代(新生代/老年代),每代采取不同的回收算法,以提高整体的分配和回收效率。无论使用哪种算法,标记总是必要的一步。垃圾回收器的工作流程大体如下:标记出哪些对象是存活的,哪些是垃圾(可回收)进行回收(清除/复制/整理),如果有移动过对象(复制/整理),还需要更新引用三色标记法基本算法要找出存活对象,根据可达性分析,从GC Roots开始进行遍历访问,可达的则为存活对象。将遍历对象图过程中遇到的对象,按“是否访问过”这个条

2020-10-16 13:34:07 1967

原创 MySQL主从复制

  **原理:**主数据库进行增删改操作后,相应操作记录的语句会记录到binlog日志文件中从数据库会请求主数据库的binlog日志文件,获取到新的操作语句,然后在自己的从数据库上自动执行相同的操作语句,进而实现主从的同步。主从复制过程:(1)Master开启bin-log功能,binlog日志文件用于记录数据库的增删改操作(2)需要开启三个线程,Master:I/O线程;Slave:I/O线程,SQL线程(3)Slave start;通过I/O线程连接Master,并且请求某个bin-log,po

2020-10-09 13:13:49 208

原创 Hive拉链表、快照表

  拉链表记录一个事物从开始,一直到当前状态的所有变化的信息。可以使用这张表拿到最新的当天的最新数据以及之前的历史数据。拉链表的使用场景在数据仓库的数据模型设计过程中,经常会遇到下面这种表的设计:有一些表的数据量很大,比如一张用户表,大约10亿条记录,50个字段,这种表即使使用ORC压缩,单张表的存储也会超过100G,在HDFS使用双备份或者三备份的话就更大一些表中的部分字段会被update更新操作,如用户联系方式,产品的描述信息,订单的状态等等需要查看某一个时间点或者时间段的历史快照信息,比

2020-10-05 21:08:13 4463 1

原创 Container启动

目录Container启动源码分析Yarn资源参数设置Container启动  Container启动命令是由各个ApplicationMaster通过RPC函数ContainerManager.startContainer()向NodeManager发起的,Container启动过程主要经历三个阶段:资源本地化、启动并运行container、资源回收。其中,资源本地化指创建container工作目录,从HDFS下载运行container所需的各种资源(jar包、可执行文件等)等,而资源回收则是资源本地

2020-10-05 10:23:44 2077

原创 MySQL存储底层原理

MySQL存储引擎InnoDB  InnoDB 的存储文件有两个,后缀名分别是.frm和.idb,其中.frm是表的定义文件,而.idb是数据文件。InnoDB 中存在表锁和行锁,不过行锁是在命中索引的情况下才会起作用。InnoDB 支持事务,且支持四种隔离级别(读未提交、读已提交、可重复读、串行化),默认的为可重复读。Myisam  Myisam 的存储文件有三个,后缀名分别是.frm、.MYD、.MYI,其中 .frm是表的定义文件,.MYD是数据文件,.MYI是索引文件。Myisam 只支持表

2020-10-03 21:49:19 3899 1

原创 基于数据库的分布式锁实现

一、基于数据库表  要实现分布式锁,最简单的方式可能就是直接创建一张锁表,然后通过操作该表中的数据来实现了。当要锁住某个方法或资源的时候,就在该表中增加一条记录,想要释放锁的时候就删除这条记录。创建这样一张数据库表:CREATE TABLE `methodLock` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', `method_name` varchar(64) NOT NULL DEFAULT '' COMMENT '锁定的方法名',

2020-10-03 13:43:18 478

原创 Spark Streaming反压

  在默认情况下,Spark Streaming 通过 receivers (或者是 Direct 方式) 以生产者生产数据的速率接收数据。当 batch processing time > batch interval 的时候,即每个批次数据处理的时间要比 Spark Streaming 批处理间隔时间长;越来越多的数据被接收,但是数据的处理速度没有跟上,导致系统开始出现数据堆积,可能进一步导致 Executor 端出现 OOM 问题而出现失败的情况。  在 Spark 1.5之前,为了解决这个问

2020-10-02 20:49:07 398

原创 MapReduce Join

Reduce Join  Map端的主要工作:为来自不同表(文件)的key/value 打标记以区别不同来源的记录,比如:tag=0表示来自文件File1,tag=2表示来自文件File2。然后用连接字段作为 key,其余部分和新加的标记作为 value,然后进行输出。  Reduce端的主要工作:在 Reduce端,以连接字段作为key 的分组已经完成,我们只需要在每一个分组当中将那些来源于不同文件的记录(在 map 阶段已经打标记)分开,最后进行合并。  但是,此方法有缺点:1、Map阶段没有对数

2020-09-30 11:51:47 245

原创 页面置换算法

FIFO  FIFO先进先出页面置换算法:置换出当前已经待在内存里时间最长的那个页。FIFO算法实现  通过维护一个链表结构去存储当前调入的页面;将最先进入的页面维护在链表的最前,最后进入的页面维护在链表的最后;这样,当发生缺页中断时,需要进行置换的时候,淘汰表头的页面并将新调入的页面加到链表的尾部;除了链表以外还可以采用数组或者队列等来进行实现。FIFO算法特点FIFO算法实现简单,易于理解易于编程FIFO算法可能会出现Belady现象。也就是在FIFO算法中,如果未分配够一个进程所要求的页

2020-09-28 20:19:28 467

原创 Map Task/Reduce Task任务模型

Hadoop的MapReduce的Map Task和Reduce Task都是进程级别的Spark Task则是基于线程模型的多进程模型和多线程模型多进程模型和多线程模型,指的是同一个节点上多个任务的运行模式。无论是MapReduce还是Spark,整体上看都是多进程的:MapReduce应用程序是由多个独立的Task进程组成的;Spark应用程序的运行环境是由多个独立的Executor进程(每个应用程序使用一个Executor进程)构建的临时资源池构成的多进程模型便于细粒度控制每个任务占用的资

2020-09-26 15:48:46 699

原创 MetaStore Thrift

Hive MetaStore整体代码分析  远程metastore服务端和客户端之间使用Thrift协议通信。IMetaStoreClient接口定义了Metastore的thrift api,该接口中定义了操作元数据的各种方法。Hive中IMetaStoreClient的实现类是HiveMetaStoreClient。Hive.getMSC() ➔ createMetaStoreClient()  ↳ RetryingMetaStoreClient.getProxy()//动态代理类创建代理对象 

2020-09-23 11:53:21 1071

原创 group by的原理

  在Mysql 中,GROUP BY 的实现有三种方式:松散索引,紧凑索引,临时文件(文件排序)。其中有两种方式会利用现有的索引信息来完成 GROUP BY,另外一种为完全无法使用索引的场景下使用。1、使用松散(Loose)索引扫描实现 GROUP BY  松散索引扫描实现 GROUP BY实际上就是当 MySQL 完全利用索引扫描来实现 GROUP BY 的时候,并不需要扫描所有满足条件的索引键即可完成操作得出结果。索引中用于group的字段,没必要包含多列索引的全部字段。例如:有一个索引idx(c

2020-09-19 10:44:41 960

原创 Hadoop机架感知

  出于保证数据安全性和数据传输的高效性的平衡考虑,HDFS希望不同节点之间的通信能够尽量发生在同一个机架之内,而不是跨机架和跨机房。同时,NameNode 在分配 Block 的存储位置的时候,会尽可能把数据块的副本放到多个机架甚至机房中,防止机架出现事故或者机房出现事故时候的数据丢失问题发生。  这就是 HDFS 的机架感知,首先机房和机架的信息是需要用户自己配置的,Hadoop对机架的感知并非是自适应的,而是需要人为的告知Hadoop哪台机器属于哪个机架,这样在Hadoop的NameNode启动初始

2020-09-18 23:48:33 989

原创 Spark and so on.

目录SparkSession与SparkContexttask失败重试机制Spark文件切分SparkSession与SparkContextSparkContext 是什么?驱动程序使用SparkContext与集群进行连接和通信,它可以帮助执行Spark任务,并与资源管理器(YARN)进行协调使用SparkContext,可以访问其他上下文,比如SQLContext和HiveContext使用SparkContext,可以为Spark作业设置配置参数SparkSession 是什么? 

2020-09-17 09:56:08 354

原创 位图与Bloom过滤器

位图  位图常用在给定一个很大范围的数,判断某个数是否在其中。BitSet是位操作的对象,值只有0或1(即true 和 false),内部维护一个long数组,初始化只有一个long segement,所以BitSet最小的size是64;随着存储的元素越来越多,BitSet内部会自动扩充,一次扩充64位,最终内部是由N个long segement 来存储。默认情况下,BitSet所有位都是0即false;基本原理是,用1位来表示一个数据是否出现过,0为没有出现过,1表示出现过。使用用的时候既可根据某一个

2020-09-15 23:02:50 271

原创 共享内存

  共享内存允许两个不相关的进程访问同一个逻辑内存,共享内存是两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常为同一段物理内存。进程可以将同一段物理内存连接到自己的地址空间中,所有的进程都可以访问共享内存中的地址。如果某个进程向共享内存写入数据,所做的改动将立即影响到可以访问同一段共享内存的任何其他进程。  共享内存并未提供同步机制,即在第一个进程结束对共享内存的写操作之前,并无自动机制可以阻止第二个进程开始对它进行读取,所以通常需要用其他的机制来同步对共享内存的访问,

2020-09-14 20:10:46 784

原创 Linux内存分区

  Linux支持多种硬件体系结构,因此Linux必须采用通用的方法来描述内存,以方便对内存进行管理,为此,Linux有了内存节点、内存区、页框的概念。内存节点(Node):主要依据CPU访问代价的不同而划分。多CPU下环境下,本地内存和远端内存就是不同的节点。内核以struct pg_data_t来描述内存节点。内存分区(Zone):Linux对内存节点再进行划分,分为不同的分区。内核以struct zone来描述内存分区。通常一个节点分为DMA、Normal和High Memory内存区。DM

2020-09-14 13:27:13 1583

原创 Spark SQL调优

1 spark.sql.codegen 默认值为false,当它设置为true时,Spark SQL会把每条查询的语句在运行时编译为java的二进制代码。可以提高大型查询的性能,但是如果进行小规模的查询的时候反而会变慢,就是说直接用查询反而比将它编译成为java的二进制代码快。所以在优化这个选项的时候要视情况而定。2 spark.sql.inMemoryColumnStorage.compressed 默认值为false 它的作用是自动对内存中的列式存储进行压缩3 spark.sql.inMemoryC

2020-09-13 22:03:51 1297

原创 Kafka中的选举问题

目录  Kafka是一个高性能,高容错,多副本,可复制的分布式消息系统。在整个系统中,涉及到多处选举机制:控制器(Broker)选主分区多副本选主消费组选主控制器(Broker)选举  所谓控制器就是一个Borker,在一个Kafka集群中,有多个broker节点,但是它们之间需要选举出一个leader,其他的broker充当follower角色。集群中第一个启动的broker会通过在zookeeper中创建临时节点/controller来让自己成为控制器,其他broker启动时也会在zoo

2020-09-11 17:03:15 553

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除