Apache Pulsar学习笔记16: 租户、命名空间创建,用户角色Token和权限配置
📅 2022-03-20
前面我们使用Helm在Kubernetes中部署了生产可用的Pulsar集群,并将集群接入到Prometheus监控系统。
作为Pulsar集群的管理员,将这套生产可用的Pulsar集群交付给开发使用时,还需要做好租户和命名空间划分和创建,用户角色和权限配置。 本节将根据实践介绍一下Pulsar集群管理员如何做这些工作的。
...前面我们使用Helm在Kubernetes中部署了生产可用的Pulsar集群,并将集群接入到Prometheus监控系统。
作为Pulsar集群的管理员,将这套生产可用的Pulsar集群交付给开发使用时,还需要做好租户和命名空间划分和创建,用户角色和权限配置。 本节将根据实践介绍一下Pulsar集群管理员如何做这些工作的。
...今天继续学习Go 1.18引入的泛型,每天利用几分钟的时间来学习,慢慢积累。
前两天学习了在Go中如何定义泛型函数,并学习了Go泛型中的类型约束(Type Constrant)的概念,今天通过参考Go官方的泛型技术提案文档,简单整理一下Go泛型的基本语法。
Go的泛型指的是在Go的类型声明和函数声明中增加可选的类型参数
。类型参数要受到类型约束,Go使用嵌入额外元素的接口类型来定义类型约束
,类型约束定义了一组满足约束的类型集(Type Set
)。
今天继续学习Go 1.18引入的泛型,我们将以Go官方的泛型教程为资料,每天利用几分钟的时间来学习,慢慢积累。
昨天我们定义了一个泛型函数,代码如下:
1// SumIntsOrFloats sums the values of map m. It supports both int64 and float64
2// as types for map values.
3func SumIntsOrFloats[K comparable, V int64 | float64](m map[K]V) V {
4 var s V
5 for _, v := range m {
6 s += v
7 }
8 return s
9}
在定义泛型函数时,需要为泛型参数指定 类型约束(type constraint) 来限制泛型参数类型的范围。
SumIntsOrFloats
函数名称后边中括号的内容[K comparable, V int64 | float64]
就是类型约束。
今天开始,来学习Go 1.18引入的泛型,我们将以Go官方的泛型教程为资料,每天利用几分钟的时间来学习,慢慢积累。
很多编程语言都支持泛型的特性,泛型是对具体类型或属性的抽象替代,可以实现在编写代码和编译代码时无需知道其在运行时具体类型的特性。
根据Go官方的泛型教程,我们将先实现两个简单的未使用泛型的函数,随后将定义一个泛型函数实现相同的逻辑。
...Go 1.18这个大型版本终于发布了,包括新功能、性能改进以及对语言的最大改变。 官方博客称Go 1.18的部分设计甚至开始于10年前首次发布Go的时候。具体来说,Go 1.18包含以下几大特性:
我在开发机上上的Go版本管理策略如下: 使用MacOS Homebrew安装的go作为主要版本, 因为Go的Homebrew Formula版本更新会延迟Go官方的发布。
所以为了体验Go新版本的特性或者同时在本地保留多个Go的版本,会使用Go Wrapper程序golang.org/dl
下载对应版本的Go Wrapper,再使用Wrapper下载安装对应的Go。
本文将通过实现一个简单的双向链表,理解Rust中的引用计数 (Rc)、引用单元 (RefCell) 和内部可变性 (Interior Mutability) 的概念。
双向链表是一种常见的数据结构,它允许我们在节点之间向前或向后遍历。为了实现双向链表,我们需要存储指向下一个和前一个节点的指针。然而,Rust的所有权系统会带来一些挑战。例如,因为简单使用引用(reference)可能会导致悬垂指针(dangling pointer)问题,这在Rust中是无法编译通过的。
...作为初学者,在掌握了rust的基本语法和所有权机制,尝试写一下常见数据结构和算法,目标是为了更好的理解rust的所有权机制。 受限于个人目前对rust仍处于入门阶段,因此本文代码实现不一定是最合适的,甚至可能存在问题。
今天的目标是用rust实现一个简单的单链表LinkedList
,同时为此链表提供从头部插入元素(头插法)、翻转链表、打印链表的功能。
前面我们已经在K8S中部署了Nacos集群,并学习了服务注册和服务发现的基本概念。 本节进行一个实战练习,将两个基于Spring Boot的微服务集成到Nacos的服务注册和服务发现。
这两个Spring Boot微服务分别是订单服务order-svc
和库存服务stock-svc
,订单服务的下单接口中会调用库存服务的库存查询接口。
因为只是演示Nacos和Spring Cloud,所以这两个服务的逻辑十分简单,只会有类似helloworld的演示代码。
上节在K8S集群中部署了Nacos集群,并将Nacos的Web控制台和API以Ingress (nacos.youcomany.com)的形式暴露到了k8s集群外部,便于从外部测试和访问。 这里再次强调Nacos被设计为一个在IDC内部使用的应用组件,而非面向公网环境的产品,因此需要在内部隔离网络中使用,这里为了测试将其暴露到K8S集群外部,如果是生产环境必须做好网络安全策略。
...上一节学习了Nacos的基本概念,Nacos是一个用于构建云原生应用的动态服务发现、配置管理和服务管理平台。
在学习如何使用Nacos之前,需要先完成Nacos的部署,Nacos支持多种不同的部署模式,虽然我们这里是以学习为目的的。 但既然Nacos是用于帮助我们构建云原生应用的,那么我们今天就一步到位,在K8S集群上部署一套生产可用的Nacos集群。
...