使用docker安装kafka
启动zookeeper容器
启动kafka容器
测试kafka
集群搭建
创建Replication为2,Partition为2的topic
1. 启动zookeeper容器docker pull wurstmeister/zookeeper
docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper
2. 启动kafka容器docker pull wurstmeister/kafka
docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.99.100:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.99.100:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka
这里面主要设置了4个参数
KAFKA_BR ...
Docker nginx安装与配置挂载并实现负载均衡
在Docker下载Nginx镜像
docker pull nginx docker images
Docker nginx安装与配置挂载并实现负载均衡
在Docker下载Nginx镜像
docker pull nginxdocker images
创建挂载目录
mkdir -p /data/nginx/{conf,conf.d,html,logs}
编写nginx,conf配置文件,并放在文件夹中
For more information on configuration, see:* Official English Documentation: http://nginx.org/en/docs/* Official Russian Documentation: http://nginx.org/ru/docs/user nginx;worker_processes auto;error_log /var/log/nginx/error.log;pid /run/nginx. ...
Docker 安装mysql5.7
1 安装
docker pull docker.io/mysql
Docker 安装mysql5.7
1 安装
docker pull docker.io/mysql
[root@iZuf6boi8ejfovwda7q1ynZ ~]# docker pull docker.io/mysqlUsing default tag: latestTrying to pull repository docker.io/library/mysql ... latest: Pulling from docker.io/library/mysqlf49cf87b52c1: Pull complete 78032de49d65: Pull complete 837546b20bc4: Pull complete 9b8316af6cc6: Pull complete 1056cf29b9f1: Pull complete 86f3913b029a: Pull complete 4cbbfc9aebab: Pull complete 8ffd0352f6a8: Pull ...
Excel表的读写
Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE。 社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过的基础设施、容器、插件等。
Centos7上安装docker
Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE。
社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过的基础设施、容器、插件等。
社区版按照stable和edge两种方式发布,每个季度更新stable版本,如17.06,17.09;每个月份更新edge版本,如17.09,17.10。
一、安装docker1、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。
通过 **uname -r **命令查看你当前的内核版本
$ uname -r
2、使用 root 权限登录 Centos。确保 yum 包更新到最新。
$ sudo yum update
3、 ...
干货|秒杀架构设计的关键技术
秒杀业务场景设计问题经常被面试的时候被问到,在实际业务中,也常常需要实现,下面我们来看看如何实现秒杀业务。
秒杀业务场景设计问题经常被面试的时候被问到,在实际业务中,也常常需要实现,下面我们来看看如何实现秒杀业务。
秒杀业务,是典型的短时大量突发访问类问题。
特点:
1. 秒杀时网站的访问量大增;
2. 秒杀时购买的请求数量远小于库存,只有部分用户能够成功;
3. 业务流程简单,根据先后顺序,下订单减库存;
首先看一下普通商品购买业务的基本逻辑
那么,秒杀业务,会影响到上面的哪些方面呢?
前端:
在同一时段,大量的用户集中访问前端页面的资源,流量剧增,导致页面刷新不及时,甚至无法访问,秒杀系统特点是并发量极大,但实际秒杀成功的请求数量却很少,所以如果不在前端拦截很可能造成数据库读写锁冲突,甚至导致死锁,最终请求超时;
解决方案:(1). 当流量过大的时候,加一个验证码可以在单位时间内有效的控制住合法用户;
(2). 将活动页面上的所有可以静态的元素全部静态化,并尽量减少动态元素,通过CDN来抗峰值;
(3). 用户提交之后按钮置灰,禁止重复提交,在某一时间段内只允许 ...
消息队列常见的 5 个应用场景
消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能、高可用、可伸缩和最终一致性架构。使用较多的消息队列有ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ、RocketMQ。
一、简介
消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能、高可用、可伸缩和最终一致性架构。使用较多的消息队列有ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ、RocketMQ。
二、消息队列应用场景
以下介绍消息队列在实际应用中常用的使用场景:异步处理,应用解耦,流量削锋和消息通讯四个场景。
1、异步处理
场景说明:用户注册后,需要发注册邮件和注册短信。传统的做法有两种:串行的方式和并行方式。
串行方式:将注册信息写入数据库成功后,发送注册邮件,再发送注册短信。以上三个任务全部完成后,返回给客户。
并行方式:将注册信息写入数据库成功后,发送注册邮件的同时,发送注册短信。以上三个任务完成后,返回给客户端。与串行的差别是,并行的方式可以提高处理的时间。
假设三个业务节点每个 ...
为什么分布式一定要有Redis?
考虑到绝大部分写业务的程序员,在实际开发中使用 Redis 的时候,只会 Set Value 和 Get Value 两个操作,对 Redis 整体缺乏一个认知。
为什么分布式一定要有Redis?“考虑到绝大部分写业务的程序员,在实际开发中使用 Redis 的时候,只会 Set Value 和 Get Value 两个操作,对 Redis 整体缺乏一个认知。
所以我斗胆以 Redis 为题材,对 Redis 常见问题做一个总结,希望能够弥补大家的知识盲点。
本文围绕以下几点进行阐述:
为什么使用 Redis
使用 Redis 有什么缺点
单线程的 Redis 为什么这么快
Redis 的数据类型,以及每种数据类型的使用场景
Redis 的过期策略以及内存淘汰机制
Redis 和数据库双写一致性问题
如何应对缓存穿透和缓存雪崩问题
如何解决 Redis 的并发竞争 Key 问题
为什么使用 Redis
我觉得在项目中使用 Redis,主要是从两个角度去考虑:性能和并发。
当然,Redis 还具备可以做分布式锁等其他功能,但是如果只是为了分布式锁这些其他功能,完全还有其他中间件,如 Zo ...
Spring Boot 集成 Lombok 让代码更简洁!
lombok的威力
IntelliJ IDEA安装lombok插件1、菜单栏 File > Settings > Plugins > Browse repositories…
2、搜索 Lombok Plugin 安装后,重启IDEA即可生效
Spring Boot项目中使用lombok.1、添加lombok依赖
2、编写一个实体类 User,使用@Data注解
3、编写测试方法,测试@Data的作用
其它简化代码的特性介绍123456789101112131415val : 最终局部变量@NonNull : 让你不在担忧并且爱上NullPointerException@CleanUp : 自动资源管理:不用再在finally中添加资源的close方法@Setter/@Getter : 自动生成set和get方法@ToString : 自动生成toString方法@EqualsAndHashcode : 从对象的字段中生成hashCode和equals的实现@NoArgsConstructor/@RequiredArgsConstructor/@AllArgsCons ...
想要做到高并发和高性能,请先真正的理解它们,以及跟CPU,内存,分布式又有什么关系呢?
互联网应用系统开发肯定经常会看到高并发和高性能这两个词,可谓是耳熟能详,而具体的含义和关系真的如你所想的,真正的理解了吗?
这次,我也结合自己的理解,来跟大家分享一下。
先来看一个例子:
一个蓄水池,是1m1m1m=1立方米大小,有一个出水口,出水口每秒钟流出0.1立方米,那么这个蓄水池的并发量是1立方米,出水速度是0.1立方米/秒。
如果增加一个出水口,都是每秒钟流出0.1立方米,那么这个蓄水池的并发量没变,但是出水速度变成了0.2立方米/秒。
同理,增大了出水口,蓄水池的出水速度也变快了。
上面我们很容易知道,并发量是一个容量的概念,性能就是出水速度,而且有下面这些结果。1 增大蓄水池的长宽高,可以增加并发能力。
2 出水口如果扩大了出口大小,则可以提高出水的速度,也就是性能提高了。
3 增加出水口的数量,则是增加了并行处理的能力,同样可以提高性能。
那么对照我们计算机中,我们的系统中,是怎么样的结果呢?1 增加服务器的内存大小,可以增加并发量。因为内存增加了,就可以开更多的进程,更多的线程,也可以扩大任务队列的大小。
2 提高cpu的主频速度,优化 ...
基于Spring Boot的Elasticsearch-5.5.2伪分布式是集群
这就是我踩过的坑
我们先去官网下载elasticsearch
Windows:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.0.zip
Linux:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.0.tar.gz
这就是我踩过的坑我们先去官网下载elasticsearch
Windows:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.0.zip
Linux:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.0.tar.gz
解压后我们复制三份出来分别命名为:elasticsearch-5.5.2-noed1、elasticsearch-5.5.2-noed2、elasticsearch-5.5.2-noed3 ...