管理docker必备容器--Portainer基础教程
简介
porttainer其实是很方便docker管理工具,自己用了也挺熟练的,可以说linux上安装docker,那么必须安装porttainer,考虑到有些小伙伴可能对porttainer不是很熟悉,所以做一个详细的教程,以便学习
介绍Portainer是一款开源的容器管理工具,旨在简化Docker容器和Kubernetes集群的管理。通过提供一个直观的Web界面,Portainer可以帮助用户轻松地创建、管理和维护容器,而无需使用复杂的命令行工具。
功能容器管理工具:Portainer支持Docker和Kubernetes,提供了一个统一的管理平台,帮助用户轻松管理和监控容器。
支持Docker和Kubernetes:Portainer与Docker和Kubernetes完美集成,为用户提供了一个简单易用的界面来管理容器和集群。
简化操作:Portainer通过Web界面简化了容器管理,用户无需熟练掌握Docker和Kubernetes命令即可完成各种操作。
部署
我这里用到的是Linux中安装docker的情况下,运行docker命令一键部署的方式,相对来说是比较方便的。
...
canal 同步 MySQL 增量数据到 ES
canal介绍canal 是阿里知名的开源项目,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。
使用 canal 将 MySQL 增量数据同步到 ES 。
**canal [kə’næl]**,译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费
早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。
基于日志增量订阅和消费的业务包括
数据库镜像
数据库实时备份
索引构建和实时维护(拆分异构索引、倒排索引等)
业务 cache 刷新
带业务逻辑的增量数据处理
当前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x
工作原理MySQL主备复制原理
MySQL master 将数据变更写入二进制日志( binary log, 其中记录叫做二进制日志 ...
seata的部署和集成
seata的部署和集成一、部署Seata的tc-server1.下载首先我们要下载seata-server包,地址在http://seata.io/zh-cn/blog/download.html
2.解压在非中文目录解压缩这个zip包,其目录结构如下:
3.修改配置修改conf目录下的registry.conf文件:
内容如下:
registry {
# tc服务的注册中心类,这里选择nacos,也可以是eureka、zookeeper等
type = "nacos"
nacos {
# seata tc 服务注册到 nacos的服务名称,可以自定义
application = "seata-tc-server"
serverAddr = "127.0.0.1:8848"
group = "DEFAULT_GROUP"
namespace = ""
cluster = "SZ"
username = "nacos"
passwo ...
分布式事务
1. 分布式事务1.1.本地事务本地事务,也就是传统的单机事务。在传统数据库事务中,必须要满足四个原则:
1.2.分布式事务分布式事务,就是指不是在单个服务或单个数据库架构下,产生的事务,例如:
跨数据源的分布式事务
跨服务的分布式事务
综合情况
在数据库水平拆分、服务垂直拆分之后,一个业务操作通常要跨多个数据库、服务才能完成。例如电商行业中比较常见的下单付款案例,包括下面几个行为:
创建新订单
扣减商品库存
从用户账户余额扣除金额
完成上面的操作需要访问三个不同的微服务和三个不同的数据库。
订单的创建、库存的扣减、账户扣款在每一个服务和数据库内是一个本地事务,可以保证ACID原则。
但是当我们把三件事情看做一个”业务”,要满足保证“业务”的原子性,要么所有操作全部成功,要么全部失败,不允许出现部分成功部分失败的现象,这就是分布式系统下的事务了。
此时ACID难以满足,这是分布式事务要解决的问题
1.3.演示分布式事务问题我们通过一个案例来演示分布式事务的问题:
① 创建数据库导入SQL文件:
② 导入工程
微服务结构如下:
其中:
seata-demo:父工程, ...
Redis集群搭建
Redis集群本章是基于CentOS7下的Redis集群教程,包括:
单机安装Redis
Redis主从
Redis分片集群
1.单机安装Redis首先需要安装Redis所需要的依赖:
yum install -y gcc tcl
然后将Redis安装包上传到虚拟机的任意目录:
例如,我放到了/tmp目录:
解压缩:
tar -zxf redis-6.2.4.tar.gz
解压后:
进入redis目录:
cd redis-6.2.4
运行编译命令:
make && make install
如果没有出错,应该就安装成功了。
然后修改redis.conf文件中的一些配置:
# 绑定地址,默认是127.0.0.1,会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问
bind 0.0.0.0
# 数据库数量,设置为1
databases 1
启动Redis:
redis-server redis.conf
停止redis服务:
redis-cli shutdown
测试redis性能
redis-benchmar ...
Redis分布式缓存
1. Redis持久化Redis有两种持久化方案:
RDB持久化
AOF持久化
1.1 RDB持久化RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取快照文件,恢复数据。快照文件称为RDB文件,默认是保存在当前运行目录。
1.1.1 执行时机RDB持久化在四种情况下会执行:
执行save命令
执行bgsave命令
Redis停机时
触发RDB条件时
1)save命令
执行下面的命令,可以立即执行一次RDB:
save命令会导致主进程执行RDB,这个过程中其它所有命令都会被阻塞。只有在数据迁移时可能用到。
2)bgsave命令
下面的命令可以异步执行RDB:
这个命令执行后会开启独立进程完成RDB,主进程可以持续处理用户请求,不受影响。
3)停机时
Redis停机时会执行一次save命令,实现RDB持久化。
4)触发RDB条件
Redis内部有触发RDB的机制,可以在redis.conf文件中找到,格式如下:
# 900秒内, ...
微服务保护
微服务保护
初识Sentinel
流量控制
隔离和降级
授权规则
规则持久化
1.初识Sentinel1.1.雪崩问题及解决方案【面试】1.1.1.雪崩问题微服务中,服务间调用关系错综复杂,一个微服务往往依赖于多个其它微服务。
如图,如果服务提供者I发生了故障,当前的应用的部分业务因为依赖于服务I,因此也会被阻塞。此时,其它不依赖于服务I的业务似乎不受影响。
但是,依赖服务I的业务请求被阻塞,用户不会得到响应,则tomcat的这个线程不会释放,于是越来越多的用户请求到来,越来越多的线程会阻塞:
服务器支持的线程和并发数有限,请求一直阻塞,会导致服务器资源耗尽,从而导致所有其它服务都不可用,那么当前服务也就不可用了。
那么,依赖于当前服务的其它服务随着时间的推移,最终也都会变的不可用,形成级联失败,雪崩就发生了:
1.1.2.超时处理解决雪崩问题的常见方式有四种:
•超时处理:设定超时时间,请求超过一定时间没有响应就返回错误信息,不会无休止等待
1.1.3.仓壁模式方案2:仓壁模式(线程池隔离)
仓壁模式来源于船舱的设计:
船舱都会被隔板分离为多个独立空间,当船体 ...
elasticsearch-3
1.数据聚合 【重点】**聚合(aggregations)**可以让我们极其方便的实现对数据的统计、分析、运算。例如:
https://www.elastic.co/guide/en/elasticsearch/reference/7.12/search-aggregations.html
什么品牌的手机最受欢迎?
这些手机的平均价格、最高价格、最低价格?
这些手机每月的销售情况如何?
实现这些统计功能的比数据库的sql要方便的多,而且查询速度非常快,可以实现近实时搜索效果。
1.1.聚合的种类聚合常见的有三类:
桶(Bucket)聚合:用来对文档做分组
TermAggregation:按照文档字段值分组,例如按照品牌值分组、按照国家分组
Date Histogram:按照日期阶梯分组,例如一周为一组,或者一月为一组
度量(Metric)聚合:用以计算一些值,比如:最大值、最小值、平均值等
Avg:求平均值
Max:求最大值
Min:求最小值
Stats:同时求max、min、avg、sum等
管道(pipeline)聚合:其它聚合的结果为基础做聚合
注意:参加 ...
elasticsearch-2
分布式搜索引擎020. 目标
能利用DSL和RestClient实现全文检索查询
能利用DSL和RestClient实现词条精确查询
能利用DSL和RestClient实现地理坐标查询
能利用DSL和RestClient实现算分查询
能利用DSL和RestClient实现布尔查询
能利用DSL和RestClient实现排序、分页、高亮
1.DSL查询文档elasticsearch的查询依然是基于JSON风格的DSL来实现的。
1.1 DSL查询分类Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。常见的查询类型包括:
查询所有:查询出所有数据,一般测试用。例如:match_all
全文检索(full text)查询:利用分词器对用户输入内容分词,然后去倒排索引库中匹配。例如:
match_query
multi_match_query
精确查询:根据精确词条值查找数据,一般是查找keyword、数值、日期、boolean等类型字段。例如:
ids
range
term
地理(geo)查询:根据经纬度查询 ...
elasticsearch-1
0.目标
了解倒排索引原理
了解索引、类型、映射、文档、字段的概念
掌握安装ES和使用IK分词器
能利用kibana实现索引库、类型映射、文档操作
能利用RestClient实现索引库、类型映射、文档操作
1. 什么是elasticsearch1.1.了解ES想象下 假设 JD上有上千万商品,现在要求你 说出 包含 手机 的商品有哪些(并说出商品ID,商品图片地址,商品价格,商品的名称)? 也就是说实现JD的搜索的功能你怎么办?
SSM的缺点:
+ 搜索精度不高
+ 搜索的速度太慢,主要是正向搜索的方式
可以使用elasticsearch解决上面的问题:
+分词器 精度提高
+倒排索引 方式极大提高搜索速度
1.1.1.elasticsearch的作用elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容。
官方地址参考如下:
https://www.elastic.co/guide/cn/elasticsearch/guide/2.x/intro.html
例如:
在GitHub搜索代码
在 ...