tanzhuo

tanzhuo

专研技术的程序员

Debian 安装 Containerd

Containerd 官方网址 :containerd – An industry-standard container runtime with an emphasis on simplicity, robustness and portability [https://containerd.io/] 官方安装教程:集装箱/started.md 在主要 ·集装箱/集装箱 (github.com) [https://github.com/containerd/containerd/blob/main/docs/getting-started.md] 安装环境: Debian 11.5.0 版本 安装流程: 1、从github仓库下载 Containerd 最新发行版到服务器上 下载地址 : https:
3 min read

Zookeeper 集群搭建

部署环境 操作系统 Debian 11.5.0 运行环境 OpenJDK-1.8.0_332 64-Bit Server VM Zookeeper版本:3.8.0 官方介绍 Zookeeper官方文档地址(下载的zip压缩包中\docs目录也自带文档):ZooKeeper: Because Coordinating Distributed Systems is a Zoo (apache.org) ZooKeeper 是一种用于分布式应用程序的分布式开源协调服务。它公开了一组简单的基元,分布式应用程序可以基于这些基元来实现更高级别的同步、配置维护以及组和命名服务。它被设计为易于编程,并使用根据文件系统熟悉的目录树结构设置样式的数据模型。它以 Java 运行,并具有 Java 和 C 的绑定。 ZooKeeper 的实施非常重视高性能、高可用性、
11 min read

常见的CI/CD工具

前言 CI/CD是一种软件开发流程,它将持续集成(Continuous Integration)和持续交付/部署(Continuous Delivery/Deployment)两个概念结合起来,旨在加速软件的交付和部署,提高软件质量和稳定性。 持续集成指的是将开发人员提交的代码自动集成到主干代码库中,然后运行一系列的测试和检查,以确保代码的质量和稳定性。这样可以避免代码冲突、降低代码合并的复杂度,同时也可以及时发现和解决代码问题,提高代码的可维护性和可测试性。 持续交付/部署则是指将经过测试和检查的代码自动部署到生产环境中,以实现快速的软件交付和部署。持续交付/部署需要借助自动化工具和流程来实现,包括自动化测试、自动化构建、自动化部署等。这样可以减少人为操作的错误和延迟,提高软件交付的速度和质量。 CI/CD的优点在于它可以加速软件开发和交付的速度,同时也可以提高软件的质量和稳定性。它可以帮助开发团队更快地响应市场需求和用户反馈,减少开发周期和成本。另外,CI/CD还可以提高开发团队的协作效率和代码管理的可靠性。 实现CI/CD需要借助一系列的工具和技术,包括版本控制工具、自
5 min read

JUC复习篇(二)锁的认识

锁的基本概念: 通过锁机制,能够保证在多线程环境中,在同一时间空间中,只能有一个线程进入临界区代码,从而保证临界区中操作数据的一致性。 公平锁: 防止某个线程出现饿死现象,也就是防止某个线程分配不到CPU时间片导致指令一直无法执行。保证公平需要额外维护线程状态,更多的线程上下文切换,开销更大,吞吐量有所下降。ReentrantLock 可用设置初始化参数设置为公平锁,Synchronized默认是非公平锁并且不能变为公平锁。 非公平锁: 直接进行计算资源抢夺,容易出现线程饿死现象。但吞吐量更高,线程切换不那么频繁,谁先抢到CPU时间片即可执行。 可重入锁: 又称为递归锁,可以再次获取已经获取到的锁对象,可以一定程度的避免死锁现象。ReentrantLock和Synchronized都是可重入锁。 不可重入锁: 线程在运行中获取到锁之后,在同步代码块种再次获取这把锁将会导致死锁,不可重入锁只允许在同步代码块中被获取一次。 互斥锁: 当一个线程占用资源时,其他线程会被挂起,不会占用CPU资源,锁被释放时,CPU去调度挂起的线程,适合不会被高频操作的资源,否则频繁调度线程的效率会较
8 min read

JUC复习篇(一)线程基础

前言 Java JUC章节的知识点繁多,为了更好的整理我掌握的知识点,故此通过书写博客的方式,其中从底层原理开始梳理,从而总结出自己对并发编程的理解。 什么是并发编程 原因还得从目前的计算机发展历史说起,根据摩尔定律,计算机CPU算力随着时间越来越高,但摩尔定律很快达到物理极限,单核心CPU算力遇到瓶颈,而人们为了追求更高的算力,使用了多核心CPU架构设计,多核心与超线程技术使得CPU算力大幅度提高。原理相当于有多个人同时执行不同的指令,整体效率当然比一个人执行得更高。(注意是整体效率更高,不意味着使用多线程就一定比单线程应用执行指令效率更高) 为了更好的运用多核心CPU的计算资源(压榨CPU),于是产生了多线程开发。虽然使用多线程在某些场景下确实提高了程序整体效率,但多线程也并不是银弹,使用多线程开发随之而来的也有诸多问题,例如:线程安全问题、锁机制、死锁、线程上下文切换带来的开销等问题。 那么说了这么多线程的描述,到底什么是线程呢? 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程
12 min read

Kubernetes 部署 Istio

前言 kubernetes 虽然已经解决了运维上的大部分问题,拥有着优秀的自动运维机制。例如:动态扩容,调度,镜像管理,容器宕机重启,计算节点监控等问题。但k8s在应用层上的监控与流量管理,应用之间的相互调用调用协调,注册中心,配置中心等功能并未提供。 于是便出现了基于Service-Mech架构的代表产品Istio。 Istio 是 Google、IBM、Lyft 三家联合开发的框架,主要作用于在 k8s 环境中微服务之间流量控制、连接、保护、设置和观测服务。使得我们开发微服务时可以抛弃掉繁琐、复杂、维护性低、强耦合性的底层微服务SDK。 Istio架构 在架构上Istio分为数据平面与控制平面。 数据平面的核心思维就是Sidecar(边车模式),在同一个pod中,添加proxy代理容器,接管我们的业务容器流量,在不对业务代码有任何入侵的前提下,从而实现各种功能,例如:负载均衡、流量加密、监控、策略(灰度发布、蓝绿发布)、熔断、降级、远程服务调用、
5 min read

kubectl 常用命令

kubectl --help :帮助信息 kubectl delete Deployments -n <命名空间> kubectl get nodes :查看集群节点数 kubectl get pod -n <命名空间> :查看对应命名空间下pod信息 kubectl get pods -A 查看所有pod kubectl get namespace :查看命名空间 kubectl get pod --all-namespace 查看所有命名下的pod kubectl apply -f :应用pod配置文件,设置资源 kubectl delete -f :取消应用pod配置文件,删除资源 kubectl create 通过yaml/json 文件或者标准输入创建一个资源对象 kubectl drain
1 min read

K8S Kubeadm 搭建流程

前言 将最近搭建的K8S流程,以及遇到的部分问题,作为笔记进行记录。 部署环境 搭建版本:kubernetes-1.24.4 (HA) 容器运行时:containerd-1.6.8 操作系统:CentOS7 前置条件 1、集群节点计算资源必须是2h-cpu 2g-ram以上的机器,节点内网或公网需要可达。 2、每个机器的hostname,mac地址不能相同,唯一性product_uuid,通过hostname可以访问对应节点,需要配置/etc/hosts文件。 3、kubernates 1.24版本后默认的容器运行时不再使用Docker,改为 Containerd 容器运行时,如果需要使用docker则需要安装cri-dockerd。 4、 HA架构必须存在3个master控制平面节点,架构如下图:(高可用分为堆叠etcd,外部etcd)。 外部etcd 优点:其中失去控制平面实例或者 etcd 成员的影响较小,并且不会像堆叠的 HA
11 min read

HBase介绍以及对比MongoDB

HBase全称:Hadoop Database。 HBase是一种高可靠性,高性能,面向列的可扩展分布式存储系统,使用HBase技术在廉价的PC服务器上构建大规模结构化存储集群。 HBase的目标是存储和处理大量数据,特别是仅使用标准硬件配置即可处理包含数千行和列的大量数据,可处理PB级别数据存储,亿级QPS查询。 它适用于实时性要求不高的业务场景,HBase存储Byte数组,该数组不介意数据类型,从而允许动态,灵活的数据模型。 架构解析: HBase由HMaster和HRegionServer组成,并且遵循主从服务器体系结构。 HBase将逻辑表分为多个数据块HRegion,并将它们存储在HRegionServer中。 HMaster负责管理所有HRegionServer。 它本身不存储任何数据,而仅存储数据到HRegionServer的映射(元数据)。 群集中的所有节点均由Zookeeper协调,并处理HBase操作期间可能遇到的各种问题。 HBase的基本架构如下所示: 客户端:使用HBase的RPC机制与HMaster和HRegionServer通信,提交请求并获得
13 min read

随心笔记

技术无止境 创新不停驻