首页 文章 精选 留言 我的

精选列表

搜索[分库分表],共10000篇文章
优秀的个人博客,低调大师

10分钟学会使用 Loki 日志聚合系统

Loki 是一个由Grafana Labs 开发的开源日志聚合系统,旨在为云原生架构提供高效的日志处理解决方案。 Loki 通过使用类似 Prometheus 的标签索引机制来存储和查询日志数据,这使得它能够快速地进行分布式查询和聚合,而不需要将所有数据都从存储中加载到内存中。Loki还使用了压缩和切割日志数据的方法来减少存储空间的占用,从而更好地适应云原生环境下的高速增长的日志数据量。 Loki的架构由以下几个主要组件组成: Promtail: 负责采集应用程序和系统的日志数据,并将其发送到 Loki 的集群中。 Loki: 负责存储日志数据,提供 HTTP API 的日志查询,以及数据过滤和筛选。 Grafana: 负责 UI 展示日志数据。 Loki vs ELK Loki 和 ELK(Elasticsearch, Logstash, Kibana)都是常用的日志处理系统,它们各自具有一些优点。下面是 Loki 相对于 ELK 的几个优点: 存储效率更高:Loki 使用了压缩和切割日志数据的方法来减少存储空间的占用,相比之下,ELK 需要维护一个大的索引,需要更多的存储空间。 查询速度更快:Loki 使用类似 Prometheus 的标签索引机制存储和查询日志数据,这使得它能够快速地进行分布式查询和聚合,而不需要将所有数据都从存储中加载到内存中。而ELK需要将数据从存储中加载到内存中进行查询,查询速度相对较慢。 部署和管理更容易:Loki 是一个轻量级的日志聚合系统,相比之下,ELK 需要部署和管理多个组件,需要更多的资源和人力成本。 安装和配置 Loki 前提 参阅 Rainbond 快速安装 文档进行安装。 安装 Loki Loki 应用已发布到开源应用商店,可通过开源应用商店一键安装。 在 平台管理 -> 应用市场 -> 开源应用商店 中搜索 Loki 并安装。 安装完成后,该应用内包含 Loki Grafana 组件: 同时还有 k8s资源,其中包括 promtail 的 Daemonset 以及 SA 等资源。 配置 Loki 进入应用内 -> k8s资源,修改 ConfigMap promtail-config 的 url 部分,URL 通过 Loki 的 组件内 -> 端口 -> 访问地址 获取,如下: apiVersion: v1 data: promtail.yaml: | clients: - url: http://gre4f2a2:3100/loki/api/v1/push # Changed ...... 进入应用内 -> k8s资源,修改 ClusterRoleBinding promtail-clusterrolebinding 的 namespace 部分为当前应用的命名空间。 apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: promtail-clusterrolebinding ...... subjects: - kind: ServiceAccount name: promtail-serviceaccount namespace: dev # Changed 如果使用的容器运行时是 Containerd 需要修改 promtail-daemonset 资源,如果容器运行时是 Docker 则不用修改。 ...... volumeMounts: - mountPath: /var/lib/containers # Changed name: varlibdockercontainers readOnly: true ...... volumes: - hostPath: path: /var/lib/containers # Changed type: "" name: varlibdockercontainers 修改后更新 Loki Grafana 组件,应用内 -> 更新即可。 使用 Loki 访问 Grafana,应用内点击访问按钮即可通过 Rainbond 默认提供的域名访问 Grafana。 进入 Explore 内通过 Labels 筛选 POD 日志,选择 namespace pod Labels,会自动生成查询表达式,点击 Show logs 即可查看日志。 查询表达式 除了通过 Grafana 界面选择 Labels 之外,还可以手动写查询表达式,比如: {container="rbd-api",namespace="rbd-system",pod="rbd-api-5fdd795546-j5679"} 目前支持以下标签匹配运算符: = 等于 != 不等于 =~ 正则匹配 !~ 正则不匹配 例如: {namespace=~"dev|rbd-system"} 最后 总之,Loki是一个轻量级、高效的日志聚合系统,它在处理云原生环境下大规模日志数据方面表现出色。Loki 相比于 ELK具有存储效率更高、查询速度更快、部署和管理更容易。结合 Rainbond 一起使用,使我们的应用和日志管理都非常简单。

优秀的个人博客,低调大师

三分钟看懂,什么是边缘计算

什么是边缘计算呢?其实关于边缘计算的定义,目前国内还没有一个严格统一的定义。今天小编就给大家整理三个关于边缘计算的说法,帮助大家快速理解什么是边缘计算。 1、维基百科说 维基百科上说,边缘计算是一种分散式运算的架构,将应用程序、数据资料与服务的运算,由网络中心节点,移往网络逻辑上的边缘节点来处理。边缘计算将原本完全由中心节点处理大型服务加以分解,切割成更小与更容易管理的部分,分散到边缘节点去处理。边缘节点更接近于用户终端装置,可以加快资料的处理与传送速度,减少延迟。我们认为边缘计算是在靠近数据源头的地方提供智能分析处理服务,减少时延,提升效率,提高安全隐私保护。这个概念可能比较抽象,接下来再举两个生动的例子给大家说明。 2、章鱼说 2016年4月,新西兰国家水族馆一只名为“Inky”的章鱼偷偷从水族缸里爬了出来,穿过房间并钻入一个排水口,通过50米长的水管逃回了外海中。Inky的成功向我们证明:章鱼是地球上非常聪明的生物之一。 那么,章鱼跟边缘计算有什么关系?其实,章鱼就是用“边缘计算”来解决实际问题的。作为无脊椎动物,章鱼拥有巨量的神经元,但60%分布在章鱼的八条腿(腕足)上,脑部仅有40%。章鱼在捕猎时异常灵巧迅速,腕足之间配合极好,从不会缠绕打结。这得益于它们类似分布式计算的“多个小脑+一个大脑”。边缘计算也属于一种分布式计算:在网络边缘侧的智能网关上就近处理采集到的数据,而不需要将大量数据上传到远端的核心管理平台。 3、仿生说 这个例子就更形象了,因为跟我们的日常生活息息相关。当我们不小心被针扎到手,或者不小心被开水烫到的时候,总是下意识地先缩手,然后大脑才反应过来手被针扎了、被开水烫了。而将手收回来的过程,正是由神经末端直接处理的非条件反射,否则如果把信号传到大脑,然后大脑再下发指令,这样只会延长时间,加重疼痛。这里的大脑就相当于“云计算”,神经末端就相当于“边缘计算”。

优秀的个人博客,低调大师

一分钟看懂人机验证产品架构

云栖号快速入门:【点击查看更多云产品快速入门】不知道怎么入门?这里分分钟解决新手入门等基础问题,可快速完成产品配置操作! 人机验证服务提供滑动验证、无痕验证、智能验证三种验证方式。通过生物特征判定操作计算机的是人还是机器,取代传统验证方式。 滑动验证 滑动验证系统间的交互流程如下图所示。 1.提交滑动行为。 该操作由前端页面中引入的JS自助完成,无需业务平台处理。其中,提交的行为数据包括: 浏览器名称、版本 操作系统 屏幕长宽 鼠标点击、移动 键盘敲击 屏幕滑动轨迹 URL 是否安装Flash 2.返回滑动结果。 该操作由前端页面中引入的JS自助完成,无需业务平台处理。针对不同风险等级用户,返回相应结果: 可信用户:滑动后直接通过,由人机验证服务端颁发签名串。 风险用户:滑动后直接拦截。 3.调用人机验证服务API接口。 由您的业务服务端调用人机验证服务API,校验签名串。 校验成功:进入业务流程。 校验失败:返回前端进行滑动验证。 无痕验证 无痕验证系统间交互流程如下图所示。 智能验证 智能验证验证系统间交互流程如下图所示。 本文来自 阿里云文档中心 人机验证 产品架构 【云栖号在线课堂】每天都有产品技术专家分享!课程地址:https://yqh.aliyun.com/zhibo 立即加入社群,与专家面对面,及时了解课程最新动态!【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK

优秀的个人博客,低调大师

【Go专家编程】5分钟玩转go.sum

为了确保一致性构建,Go引入了go.mod文件来标记每个依赖包的版本,在构建过程中go命令会下载go.mod中的依赖包,下载的依赖包会缓存在本地,以便下次构建。 考虑到下载的依赖包有可能是被黑客恶意篡改的,以及缓存在本地的依赖包也有被篡改的可能,单单一个go.mod文件并不能保证一致性构建。 为了解决Go module的这一安全隐患,Go开发团队在引入go.mod的同时也引入了go.sum文件,用于记录每个依赖包的哈希值,在构建时,如果本地的依赖包hash值与go.sum文件中记录得不一致,则会拒绝构建。 go.sum文件记录 go.sum文件中每行记录由module名、版本和哈希组成,并由空格分开: <module> <version>[/go.mod] <hash> 比如,某个go.sum文件中记录了github.com/google/uuid 这个依赖包的v1.1.1版本的哈希值: github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= 在Go module机制下,我们需要使用依赖包名称和版本才可以准确的描述一个依赖,为了方便叙述,下面我们使用依赖包版本来指代依赖包名称和版本。 正常情况下,每个依赖包版本会包含两条记录,第一条记录为该依赖包版本整体(所有文件)的哈希值,第二条记录仅表示该依赖包版本中go.mod文件的哈希值,如果该依赖包版本没有go.mod文件,则只有第一条记录。如上面的例子中,v1.1.1表示该依赖包版本整体,而v1.1.1/go.mod表示该依赖包版本中go.mod文件。 依赖包版本中任何一个文件(包括go.mod)改动,都会改变其整体哈希值,此处再额外记录依赖包版本的go.mod文件主要用于计算依赖树时不必下载完整的依赖包版本,只根据go.mod即可计算依赖树。 每条记录中的哈希值前均有一个表示哈希算法的h1:,表示后面的哈希值是由算法SHA-256计算出来的,自Go module从v1.11版本初次实验性引入,直至v1.14 ,只有这一个算法。 此外,细心的读者或许会发现go.sum文件中记录的依赖包版本数量往往比go.mod文件中要多,这是因为二者记录的粒度不同导致的。go.mod只需要记录直接依赖的依赖包版本,只在依赖包版本不包含go.mod文件时候才会记录间接依赖包版本,而go.sum则是要记录构建用到的所有依赖包版本。 生成 在GOMODULE模式下,当我们引入一个新的依赖(使用import xxx)时,在使用go命令(go build、go get等)时都会触发依赖包的下载,依赖包首先会被下载到本地的缓存目录$GOPATH/pkg/mod/cache/download,下载的依赖包为某个.zip文件,go命令在下载完后成会对该.zip文件计算哈希值,并保存在后缀为.ziphash的文件中,此哈希值即为依赖包版本整体的哈希值。为了更新go.sum,还会将该.zip包解压并取出go.sum再次计算哈希值,此哈希值即为依赖包版本中go.mod文件的哈希值。 简单来说,go.sum中的记录是go命令首次添加进去的。而且后续随着依赖的增加或减少,go命令也会相应的新增或删除go.sum中的记录。 校验 在GOMODULE模式下,当我们使用go命令构建项目时,如果项目中包含go.sum文件,则会进行依赖包版本的校验。go命令会跟据go.mod到本地缓存目录$GOPATH/pkg/mod/cache/download寻找相应依赖包版本的哈希值,然后与项目中go.sum记录的哈希值比较,如果不一致则表示校验失败,go命令将会拒绝执行。 校验失败说明本地缓存目录中依赖包版本的哈希值和项目中go.sum中记录的哈希值不一致,此时有意思的是如何区别谁对谁错。需要说明的是,二者都可能出错,本地缓存目录中的依赖包版本有可能被有意或无意地修改过,项目中go.sum中记录的哈希值也可能被篡改过。 为了解决这个问题,Go团队引入了GOSUMDB来充当仲裁的角色。 仲裁 环境变量GOSUMDB标识一个checksum database,即校验和数据库。该数据库中记录了很多依赖包版本的哈希值,当本地缓存目录中依赖包版本的哈希值和项目中go.sum中记录的哈希值不一致时,将会从GOSUMDB指示的数据库中查询得到一个准确的哈希值,据此识别出哪个是正确的。 如果是项目中的go.sum哈希值错误,go命令会自动更新go.sum,如果是缓存中的哈希值错误,则go命令拒绝向下执行,需要开发人员自行检查依赖包版本是否被修改过。 此外,环境变量GOSUMDB默认值为sum.golang.org,它是Google 官方维护的一个数据库,其会缓存所有可公开获得的依赖包,也可以指定自行搭建的数据库。还可以使用GOPRIVATE环境变量指定私有的依赖包,从而跳过校验。 参考文档 命令行帮助文档:$ go help module-auth Go 1.14 源码 赠人玫瑰手留余香,如果觉得不错请给个赞~ 本篇文章已归档到GitHub项目,求星~ 点我即达

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册