自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

我不是什么好人

变强不变秃

  • 博客(360)
  • 收藏
  • 关注

原创 ClickHouse

前言mysql:关系型数据库,支持事务,单节点存储数据量有限hbase:数据库、可存储海量数据、不太支持sql、存k-v取value比较快、不适合分析做报表hive:数仓工具,底层转成mr程序处理和分析数据、良好的SQL语法、便于分析做报表、但是慢clickhouse:存储海量数据、快速查询、多维度多运算模型clickhouse简介开源的用于OLAP的列式数据库管理系统(DBMS),主要用于在线分析处理查询,能够使用SQL查询实时生成分析数据报告全称:click stream,data

2021-06-03 17:14:14 1120

原创 SpringCloud-SpringCloud Alibaba Nacos服务注册和配置中心

Nacos简介是什么就是注册中心和配置中心的组合Nacos = Eureka+Config+Bus能干嘛替代Eureka作为注册中心替代Config作为配置中心相关参考下载地址中文文档英文文档安装并运行Nacos装了个window版本的startup.cmd -m standalonehttp://localhost:8848/nacos账号密码都是nacosNacos作为服务注册中心演示建cloudalibaba-provider-payment9001

2021-03-07 16:39:00 647

原创 SpringCloud-SpringCloud Alibaba入门简介

给爷冲为啥出现Spring Cloud Netflix项目进入维护模式这意味着Spring Cloud团队将不会再向模块添加新功能,但会修复一些bug以及安全问题这意味者新组件将以其他替代的方式实现SpringCloud alibaba带来了什么?官网Spring手册服务限流降级:默认支持Servlet、Feign、RestTemplate、Dubbo和RocketMQ限流降级功能的接入,可以在运行时通过控制台实时修改限流降级规则,还支持查看限流降级Metrics监控服务发现与注册:

2021-03-05 20:03:55 219

原创 SpringCloud-SpringCloud Sleuth分布式请求链路追踪

概述在一个复杂的微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的服务节点调用来协同产生最后的请求结果,每一个前端请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或者错误都会引起整个请求最后的失败。是什么官网Spring Cloud Sleuth提供了一套完整的服务跟踪的解决方案在分布式系统中提供追踪解决方案并且兼容支持了zipkin搭建链路监控步骤zipkinSpringCloud从F版起已不需要自己构建Zipkin server了,只需要调用j

2021-03-05 16:59:41 162

原创 SpringCloud-SpringCloud Stream消息驱动

消息驱动概述屏蔽底层消息中间件的差异,降低切换版本,统一消息的编程模型什么是SpringCloudStream一个构建消息驱动微服务的框架应用程序通过inputs或者outpus来与Spring Cloud Stream中binder对象交互,通过我们配置来binding(绑定),而Spring Cloud Stream的binder对象负责与消息中间件交互,所以要搞清楚如何与Spring Cloud Stream交互就可以方便使用消息驱动的方式通过使用Spring Integration来

2021-03-05 16:09:32 176 3

原创 SpringCloud-SpringCloud Bus 消息总线

概述上一节解决了不用重启微服务客户端,就可以获得配置信息,但是还是需要发送post请求刷新才行这一节完成分布式的自动刷新功能Spring Cloud Bus配合Spring Cloud Config使用可以实现配置的动态刷新是什么Bus支持两种消息代理,RabbitMQ和Kafka什么是总线在微服务架构的系统中,通常会使用轻量级的消息代理来构建一个共用的消息主题,并让系统中所有微服务实例都连接上来,由于该主题中产生的消息会被所有实例监听和消费,所以称它为消息总线。在总线上的各个实

2021-03-05 10:30:01 239 3

原创 SpringCloud-SpringCloud Config 分布式配置中心

概述微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不可少的。SpringCloud提供了ConfigServer来解决这个问题,我们每一个微服务自己带着一个application.yml,上百个配置文件的管理…/(ㄒoㄒ)/~~是什么SpringCloud Config为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用.

2021-03-04 19:54:41 105 1

原创 SpringCloud-Gateway新一代网关

概述zuul官网:2.0还没出来gateway官网:spring等不及自己研发的gateway是原zuul1.x的替代Gateway是Spring生态系统之上构建的API网关服务,基于Spring5,Spring Boot2和Project Reactor等技术Gateway旨在提供一种简单而有效的方式来对API进行路由,以及提供一些强大的过滤功能,例如:熔断,限流,重试等。SpringCloud Gateway作为Spring Cloud生态系统中的网关,目的是替代Z

2021-03-04 09:22:47 415 3

原创 SpringCloud-Hystrix断路器

概述分布式系统面临的问题有人崩了可咋弄服务雪崩:多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其他微服务,这就是所谓的扇出。如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,即雪崩效用对于高流量的应用来说,单一的后端依赖可能会导致所有的服务器上的所有资源都在几秒钟内饱和。这些应用程序还可能导致服务之间的延迟增加,备份队列,线程和其他资源紧张,导致整个系统发生更多的级联故障。这些都表示需

2021-03-02 21:22:50 166

原创 SpringCloud-OpenFeign服务接口调用

概述是什么GithubFeign是一个声明式WebService客户端,使用Feign能够让编写Web Service变得简单其使用方法是定义一个服务接口然后在上面添加注解,Feign也支持可插拔式的编码器和解码器。Spring Cloud对Feign进行了封装使其支持了Spring MVC标准注解和HttpMessageConverters。Feign可以与Rureka和Ribbon组合使用支持负载均衡只需要创建一个接口,然后添加一个注解能干啥Feign旨在使编写Java Http客户

2021-03-02 14:37:09 336

原创 SpringCloud-Ribbon负载均衡调用

利用Eureka来演示,需要启动的程序如下:概述是什么Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端 负载均衡工具提供客户端软件负载均衡算法和服务调用。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单来说,就是在配置文件中列出Load Balancer(LB)后面所有的机器,Ribbon会自动的帮助基于某种规则(简单轮询,随机连接等)去连接这些机器。我们很容易使用Ribbon实现自定义的负载均衡算法。一句话负载均衡+RestTe.

2021-03-02 10:23:28 104 1

原创 SpringCloud-Consul服务注册与发现

Consul简介是什么Consul是一套开源的分布式服务发现和配置管理系统,由HashiCorp公司使用Go语言开发提供了微服务系统中的服务治理,配置中心,控制总线等功能。这些功能每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网格,总之Consul提供了一种完整的服务网格解决方案。...

2021-03-01 16:59:33 148

原创 狂神Docker学习笔记

Docker简介出现原因:解决项目发布时的环境部署问题。vm:linux centos原生镜像,几个G,几分钟。docker:隔离,镜像(核心环境4m+jdk+mysql)十分小巧,运行镜像就可以了,秒级启动。官网Docker Hub每一个容器就是一个app和lib的集合,不同容器相互隔离,不同容器共用的只有内核。Docker的好处应用更快速的交付和部署更便捷的升级和扩缩容更简单的系统运维更高效的计算资源应用Docker架构镜像(image):类似模板,

2021-01-30 16:23:27 825

原创 SpringCloud-Zookeeper服务注册与发现

SpringCloud整合Zookeeper替代Eureka服务提供者payment8004建module改pom <description>zookeeper服务提供者</description> <dependencies> <dependency> <groupId>org.hsw.cloud</groupId> <artifactId>

2021-01-23 20:09:58 143

原创 SpringCloud-Eureka服务注册与发现

Eureka服务注册与发现一些概念服务治理:SpringCloud封装了Netflix公司开发的Eureka模块实现服务治理,在传统的rpc远程调用框架中,每个服务之间依赖关系比较复杂,管理比较复杂,所以需要使用服务治理,管理服务与服务之间的依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册。服务注册与发现:Euraka采用CS的设计架构,Euraka Server作为服务注册功能的服务器,他是服务中心。系统中其他微服务,使用Rureka的客户端连接到Rureka Server

2021-01-23 11:06:12 261

原创 SpringCloud入门篇

SpringCloud=分布式微服务架构的一站式解决方案,是多种微服务架构落地技术的集合体,俗称微服务全家桶服务注册与发现 EUREKA服务调用 NETFLIX OSS RIBBON服务熔断 HYSTRIX负载均衡服务降级服务消息队列配置中心管理服务网关 Zuul服务监控全链路追踪自动化构建部署服务定时任务调度操作...

2021-01-22 15:06:54 301 2

原创 Netty学习:第三天

编码和解码编写网络应用程序时,因为数据在网络中传输的都是二进制字节码数据,在发送数据时就需要编码,接收数据时就需要解码codec(编解码器) 的组成部分有两个:decoder(解码器)和 encoder(编码器)。encoder 负责把业务数据转换成字节码数据,decoder 负责把字节码数据转换成业务数据Netty 自身提供了一些 codec(编解码器)Netty 提供的编码器StringEncoder,对字符串数据进行编码ObjectEncoder,对 Java 对象进行编码

2020-11-05 20:43:11 178

原创 Netty学习:第二天

Netty概述原生NIO存在的问题NIO 的类库和 API 繁杂,使用麻烦:需要熟练掌握 Selector、ServerSocketChannel、SocketChannel、ByteBuffer 等。需要具备其他的额外技能:要熟悉 Java 多线程编程,因为 NIO 编程涉及到 Reactor 模式,你必须对多线程和网络编程非常熟悉,才能编写出高质量的 NIO 程序。开发工作量和难度都非常大:例如客户端面临断连重连、网络闪断、半包读写、失败缓存、网络拥塞和异常流的处理等等。JDK

2020-11-01 16:33:11 499

原创 Netty学习:第一天

Netty是什么Netty是JBoss提供的一个Java开源框架,现为Github的独立项目Netty是一个异步的、基于事件驱动的网络应用框架,用来快速开发高性能、可靠性的网络IO程序Netty主要针对在TCP协议下,面向Clients端的高并发应用,或者peer-to-peer场景下的大量数据持续传输应用Netty本质是一个NIO框架,适用于服务器通讯等多种应用场景要透彻理解Netty,先要了解NIONetty的应用场景互联网行业在分布式系统中,各个节点间需要远程服务调用,需要高性能

2020-10-15 10:59:48 131

原创 Zookeeper入门:第三天

Zookeeper开源客户端ZKClient和Curator简介Zookeeper客户端提供了基本的操作,比如,创建会话、创建节点、读取节点、更新数据、删除节点和检查节点是否存在等。但对于开发人员来说,Zookeeper提供的基本操纵还是有一些不足之处。Zookeeper API不足之处Zookeeper的Watcher是一次性的,每次触发之后都需要重新进行注册;Session超时之后没有实现重连机制;异常处理繁琐,Zookeeper提供了很多异常,对于开发人员来说可能根本不知道该如何处理这

2020-10-12 20:42:26 454

原创 Zookeeper入门:第二天

事件监听机制zookeeper提供了数据的发布/订阅功能,多个订阅者可同时监听某一特定主题对象,当该主题对象的自身状态发生变化时例如节点内容改变、节点下的子节点列表改变等,会实时、主动通知所有订阅者zookeeper采用了 Watcher机制实现数据的发布订阅功能。该机制在被订阅对象发生变化时会异步通知客户端,因此客户端不必在 Watcher注册后轮询阻塞,从而减轻了客户端压力watcher机制事件上与观察者模式类似,也可看作是一种观察者模式在分布式场景下的实现方式1.watcher架构wat

2020-10-12 14:37:27 214

原创 Zookeeper入门:第一天

简介ZooKeeper是一个集中的服务,用于维护配置信息、命名、提供分布式同步和提供组服务。所有这些类型的服务都以某种形式被分布式应用程序使用。每次它们被实现时,都会有大量的工作来修复不可避免的错误和竞争条件。由于实现这些服务的困难,应用程序最初通常会略过这些服务,这使得它们在出现更改时变得脆弱,并且难以管理。即使正确地执行了这些服务,在部署应用程序时,这些服务的不同实现也会导致管理复杂性。应用场景zookeepepr是一个经典的分布式数据一致性解决方案,致力于为分布式应用提供一个高性能、高可用,且具

2020-10-11 17:11:43 458

原创 关于秒杀的一些问题

画一下项目的架构图https://zhuanlan.zhihu.com/p/59944775项目可改进的地方没有设置降级的方案限流做的不够完善,目前只对用户对于某个商品的访问做了限流,没有对整体的流量做限流,比如不法分子有非常多的账号,同时对一个商品发起请求可能造成我们的服务不可用。没有考虑redis穿透的情况处理方案在这个项目中是对库存和静态数据进行了预热,但是实际中有可能某个商品可能一时间快速爆火,如果没有对这些是商品数据进行预热可能会使服务宕掉,需要快速发现热点数据的发现与隔离,.

2020-08-08 21:39:22 6280 2

原创 笔记链接

黑马ssm:csdnjvm:github

2020-07-18 22:51:53 221

原创 啥也不懂选手对于秒杀系统的思考(百度)

满纸复制文,一把辛酸泪面试造火箭,工作拧螺丝一、秒杀系统要解决的问题并发读:并发读的优化理念就是减少用户来服务器读数据并发写:并发写的优化理念就是减少用户来服务器写数据,数据库层面要增加新库存放数据,以便做特殊处理(比如:单独保存要秒杀商品信息,单独弄一个表存秒杀订单)在解决以上两个问题之上,还要增加兜底方案二、秒杀系统设计的目标与原则目标就是建立可承受超高流量并发读写,高性能,高可用系统原则就是保证用户请求数据量尽量少、请求数尽量少、路径尽量短、依赖尽量少、分布式部署保证高可用高可

2020-07-13 21:58:59 578 1

原创 RabbitMQ学习笔记-第七章、学大厂,拓展基础组件封装思路

本章导航一线大厂的MQ组件实现思路和架构设计方案基础组件封装设计-迅速消息发送基础组件封装设计-确认消息发送基础组件封装设计-批量发送消息基础组件封装设计-延迟消息发送基础组件封装设计-顺序消息发送基础组件封装设计-事务消息发送消息的幂等性保障-消息路由规则架构设计7.1一线大厂的MQ组件实现思路和架构设计思路一、MQ组件实现功能点支持消息高性能的序列化转换、异步化发送消息支持消息生产实例与消费实例的链接池化缓存化、提升性能支持可靠性投递消息、保障消息的100%不丢失支持

2020-07-09 23:30:30 213

原创 RabbitMQ学习笔记-第六章、追前沿,领略SET化架构衍化与设计

2020-07-09 21:42:57 153

原创 RabbitMQ学习笔记-第五章下、RabbitMQ集群的搭建

5.1基础知识的补充1.集群总体概述Rabbitmq Broker集群是多个erlang节点的逻辑组,每个节点运行Rabbitmq应用,他们之间共享用户、虚拟主机、队列、exchange、绑定和运行时参数。2.集群复制信息除了message queue(存在一个节点,从其他节点都可见、访问该队列,要实现queue的复制就需要做queue的HA)之外,任何一个Rabbitmq broker上的所有操作的data和state都会在所有的节点之间进行复制。3.集群运行前提集群所有节点必须运行

2020-07-09 21:38:04 280

原创 RabbitMQ学习笔记-第五章上、RabbitMQ集群架构介绍

本章导航了解RabbitMQ集群架构模式构架高可靠RabbitMQ集群集群配置文件与集群运维故障、失败转移讲解

2020-07-09 17:25:59 151

原创 RabbitMQ学习笔记-第四章、RabbitMQ高级整合应用

本章导航RabbitMQ整合Spring AMQP实战RabbitMQ整合Spring Boot实战RabbitMQ整合Spring Cloud实战4.1RabbitMQ整合Spring AMQP实战RabbitAdminSpringAMQP声明RabbitTemplateSimpleMessageListenerContainerMessageListenerAdapterMessageConverter一、RabbitAdminRabbitAdmin类可以很好的操作Rab

2020-07-09 15:50:06 307

原创 RabbitMQ学习笔记-第三章、高级特性

本章导航消息如何保障100%投递成功幂等性概念详解在海量订单产生的业务高峰期,如何避免消息的重复消费等问题Confirm确认消息、Return返回消息自定义消费者消息的ACK和重回队列消息的限流TTL消息死信队列3.1消息如何保障100%投递成功什么是生产端的可靠性投递保障消息的成功发出保障MQ节点的成功接收发送端收到MQ节点(Broker)确认应答完善的消息进行补偿机制大厂的解决方案一消息落库,对消息状态进行打标各步骤的解释:第一步:把业务(比如写订单)入

2020-07-06 17:54:35 159

原创 RabbitMQ学习笔记-第二章、核心概念

2.1初识RabbitMQRabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,RabbitMQ使用Erlang语言编写的,并且RabbitMQ是基于AMQP协议的为什么选用RabbitMQ开源、性能优秀、稳定性保障提供可靠性消息投递模式(confirm)、返回模式(return)SpringAMQP完美的整合、API丰富集群模式丰富、表达式配置、HA模式(高可用)、镜像队列模式保证数据不丢失的前提下保证高可靠性和可用性RabbitMQ高性能的原

2020-07-05 16:53:11 191

原创 RabbitMQ学习笔记-第一章、介绍

主流消息中间件介绍一、ActiveMQ简介ActiveMQ是Apache出品,最流行的,能力强劲的开源消息总线,并且他一个完全支持JMS规范的消息中间件其丰富的API、多种集群构建模式使得他成为业界老牌消息中间件,在中小型企业应用广泛MQ衡量指标:服务性能、数据存储、集群架构现在已经不常使用因为性能不是很好,比如阻塞消息堆积过多架构说明:1.Master-Slave模式:使用Zookeeper进行多个节点间的协调,只有一个主节点对外提供服务,其他从节点不对外提供服务,若是主节点宕机使

2020-07-04 22:30:37 148

原创 消息队列---RabbitMQ常见问题总结

1.为什么使用消息队列解耦、削峰、异步处理2.消息队列的优缺点优点就是异步、解耦、削峰。系统可用性降低:引入的外部组件越多,系统可用性越低。系统的复杂度提高:需要考虑消息重复(幂等性),丢失的解决方案。可能存在数据一致性问题,生产者以为消息被处理了,实际上没有被处理。3.为什么选用RabbitMQRabbitMQ的吞吐量比RocketMQ和kafka的吞吐量低,但其是基于erlang开发的基于AMQP协议的消息队列。并发性能很强,性能很好,延时很低,基于主从架构实现高可用性4.

2020-06-16 17:55:52 1259

原创 程序员代码面试指南刷题--第九章.设计LRU缓存结构

题目描述设计LRU缓存结构,该结构在构造时确定大小,假设大小为K,并有如下两个功能set(key, value):将记录(key, value)插入该结构get(key):返回key对应的value值[要求]set和get方法的时间复杂度为O(1)某个key的set或get操作一旦发生,认为这个key的记录成了最常使用的。当缓存的大小超过K时,移除最不经常使用的记录,即set或get最久远的。输入描述:第一行两个个整数N, K,表示操作数量以及缓存结构大小接下来N行,第一行一个整数o

2020-06-08 08:51:21 983

原创 程序员代码面试指南刷题--第九章.最大的leftMax与rightMax之差的绝对值

题目描述给定一个长度为N(N>1)的整形数组arr, 可以划分成左右两个部分,左部分为arr[0…K],右部分为arr[K+1…N-1], K可以取值的范围是[0,N-2]。求这么多划分方案中,左部分中的最大值减去右部分最大值的绝对值中,最大是多少[要求]时间复杂度为O(n), 空间复杂度为O(n)输入描述:第一行一个整数N,表示数组长度。接下来一行N个整数,表示数组内的数。输出描述:输出一个整数表示最优答案示例1输入52 7 3 1 1输出6解法一:借助两个数组

2020-06-07 09:06:50 239

原创 程序员代码面试指南刷题--第九章.设计有setAll功能的哈希表

题目描述哈希表常见的三个操作时put、get和containsKey,而且这三个操作的时间复杂度为O(1)。现在想加一个setAll功能,就是把所有记录value都设成统一的值。请设计并实现这种有setAll功能的哈希表,并且put、get、containsKey和setAll四个操作的时间复杂度都为O(1)。[友情提示]: C++选手若有需要可以使用unordered_map替换map来将复杂度从O(log n)降为O(1)输入描述:第一行一个整数N表示操作数。接下来N行,每行第一个数字opt代

2020-06-07 08:43:42 266

原创 程序员代码面试指南刷题--第九章.蓄水池算法

容量为k的袋子,一共有n个球,使得n>k时袋子里有k个球同时保证没吐出一个球所有球进袋子的概率就是k/i(i为当前一共吐出的数量i>k&&i<=n)解法一:蓄水池算法public int[] getKRands(int k,int max){ if(max<1||k<1) return null; int[] res = new int[Math.min(k,max)]; for(int i=0;i<res.length;i++){ res[

2020-06-07 08:18:44 215

原创 慢慢来--反射相关

介绍Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任何一个对象都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java反射。两种方式获取Class对象具体类.classClass.forName(xxx)静态编译:在编译时确认类型,绑定对象动态编译:运行时确定类型,绑定对象反射优缺点优:运行期类型的判断,动态加载类,提高代码灵活性缺:反射相当于一系列解释操作,比直接运行java代码慢很多。另外反射动态操作类的属

2020-06-06 12:08:23 164

原创 慢慢来--final、static、this、super关键字

final关键字final关键字可以用来修饰类、方法和变量final修改的类不能被继承,final类中所有成员方法都会隐式的指定为final方法final修饰的方法不能被重写final修饰的变量是常量,如果是基本数据类型的变量,则其数值初始化后便不能修改;如果是引用类型的变量,初始化后不能指向另一个对象说明:使用final方法的原因有两个,一是把防止方法被重写;第二个原因是效率,早起java中final方法会转为内嵌调用,但是方法如果过于庞大,内嵌调用并不会带来性能的提升。类中所有的priva

2020-06-06 11:26:22 98

空空如也

空空如也

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

TA关注的人

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