Kerberos原理说明

Kerberos

Kerberos是一种通过传统的加密技术(共享密钥)实现的可信任的第三方认证机制。

kerberos协议中包含3种角色:

  • 客户端(client):发送请求的一方
  • 服务端(Server):接收请求的一方
  • 密钥分发中心(Key Distribution Center,KDC):密钥分发中心包括AS(Authentication Server)认证服务器和TGS(Ticket Granting Ticket)票据授予服务器

整个kerberos认证流程可以简化描述如下:
客户端在访问每个想要访问的网络服务时,他需要携带一个专门用于访问该服务并且能够证明自己身份的票据,当服务端收到了该票据他才能认定客户端身份正确,向客户端提供服务。所以整个认证流程可简化为两大步:

  1. 客户端向KDC请求获取想要访问的目标服务的服务授予票据(Ticket)(先在AS做可信身份认证,再在TGS申请票据);
  2. 客户端拿着从KDC获取的服务授予票据(Ticket)访问相应的网络服务


nginx添加basic表单认证

nginx给网站添加basic表单认证

很多大数据组件的adminUI 并没有设计授权认证,可以通过nginx 做一个简单的用户名密码认证:

  1. 生成密码文件
1
2
3
4
yum install httpd-tools -y

#输入密码,就会生成加密的用户密码文件
htpasswd -c /etc/nginx/conf.d/.ngpasswd admin

2 nginx 加上 auth_basic信息


Trino、Kudu 自监控页面配置Nginx Path访问

Trino、Kudu 自监控页面配置Nginx Path访问

Trino 的WebUI 默认是 {domain/ip}:8080

Kudu 的WebUI 默认是 {domain/ip}:8051/8050

现在期望通过 {domain/ip}:80/trino、 {domain/ip}:80/kudu 来访问

在客户环境中并不能把这些端口都开放出来,那么就需要通过Nginx 配置 path 才能访问,直接设置 proxy_pass 并不能展现出来,kudu 的因为html中都是绝对路径,Trino中是由于cookie设置是固定的

也许可以通过 kudu或者trino本身的配置实现 path 访问,但是没找到,所以想了其他办法


Kudu 删除表range分区

Kudu 删除表range分区

https://kudu.apache.org/docs/command_line_tools_reference.html#table-drop_range_partition

注意事项

  1. 一次只能删一个分区
  2. 分区条件必须前后精准匹配
  3. 可以通过kudu table describe查看表信息(包括分区信息):
1
2
# 查看表信息,包括列、分区信息
kudu table describe 10.128.2.162:7051,10.128.2.72:7051,10.128.2.172:7051 bn_op_1228

Kudu表复制(表数据迁移)

Kudu 表复制(表数据迁移)

https://kudu.apache.org/docs/command_line_tools_reference.html#table-copy

注意事项:

  1. 要求复制表于原表的列的结构一致(不要求分区和副本一致,所以可以调整表的副本数)
  2. 可以先只复制表结构
  3. predicates 预言 大小比值 只支持数值类型,时间戳类型不支持
  4. 注意超时设置
  5. write_type 参数有3种:
    1. 空字符 ,表示只复制表结构
    2. insert,直接插入
    3. upsert,更新插入

行为数据存储中的分区和分桶

行为数据存储中的分区和分桶

存储引擎一般都支持分区分桶

分区的意义在于将数据分散到多个子目录中,在执行查询时,可以只选择查询某些子目录中的数据来加快查询效率。

分桶的意义实际和分区一样,只是并非所有的数据都可以形成合理的分区,而分桶可以弥补分区这个缺陷,将数据集分解为若干部分

分区可以做多级分区,分区的个数可以指定,也可以由程序自动生成, 分区是可以动态增长的

分桶的个数是一经决定,就不能更改,所以如果要改变桶数,要重新插入分桶数据

行为数据本质是时序数据,所以分割的关键要素第一肯定是 时间,第二个分割的关键要素就是 事件


分布式 Trace 数据模型

分布式 Trace 数据模型

distributed-tracing 数据模型

通过跟踪从前端到后端的交互,通过trace数据,可以扩展现有的错误数据,跟踪软件的性能,测量吞吐量和延迟等指标,并显示跨多个系统的错误影响:

  • 出现特定错误事件或问题时发生了什么
  • 哪些因素导致应用程序出现瓶颈或延迟问题
  • 哪些的endpoint或操作消耗时间最多

什么是追踪?

首先,请注意Trace不是什么:Trace不是分析。尽管概要分析和跟踪的目标有相当多的重叠,虽然它们都可用于诊断应用程序中的问题,但它们在测量的内容和记录数据的方式方面有所不同。

一个Profiler可以测量任何数目的应用程序的操作的各方面的:指令执行数,正在使用的各种处理的内存量,给定的时间的函数调用需要的量,等等。生成的配置文件是这些测量值的统计汇总。

一个tracer工具,在另一方面,侧重于什么事(何时),而不是发生了多少次发生或者花了多长时间。trace的结果是在程序执行期间发生的事件日志,这些事件往往跨越多个系统。就 Sentry 的跟踪而言,总是——包括时间戳,允许计算持续时间,但测量性能并不是它们的唯一目的。它们还可以显示互连系统交互的方式,以及一个系统中的问题可能导致另一个系统出现问题的方式。

(备注:除了测量性能外,还可以做故障的根因分析)


如何理解session分析

如何理解session分析

假设我们是个电商企业,包含了web端,app,小程序的产品。以下是小王访问产品的行为序列:

  1. 启动(平台=JS)
  2. 浏览页面(平台=js,商品=男装)
  3. 浏览页面(平台=js,商品=手机)
  4. 浏览商品详情(平台=js,商品=手机)
  5. 加入收藏(平台=JS,商品=手机)
  6. 浏览页面(平台=js,商品=食品)
  7. 启动(平台=JS)
  8. 浏览页面(平台=js,商品=电脑)
  9. 浏览商品详情(平台=js,商品=电脑)
  10. 加入购物车(平台=js,商品=电脑)
  11. 提交订单(平台=安卓,商品=电脑)
  12. 订单详情(平台=安卓,商品=电脑)
  13. 确认支付、完成订单(平台=后端埋点)
  14. 结束(平台=安卓)
  15. 启动(平台=小程序)
  16. 我的订单(平台=小程序)

小王同学的这一系列行为,应该算成几次会话呢?


Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×