注:本文所有函数名为中文名,并不符合代码规范,仅供读者理解参考。上下文上下文(Context)代表了程序(也可以是进程,操作系统,机器)运行时的环境和状态,联系程序整个生命周期与资源调用,是程序可以访问到的所有资源的总和,资源可以是一个变量,也可以是一个对象的引用。上下文切换所谓的上下文切换(contextswitch),指的是发生进程调度(进程切换)时,内核(kernel)要把当前进程的状态和数据保存起来以备以后使用,同时把之前保存的进程的相关状态调出来,这样新调度出来的进程才能运行。原语原语,一般是指由若干条指令组成的程序段,用来实现某个特定功能,在执行过程中不可被中断。计算机是一门人造科
编程旅途是漫长遥远的,在不同时刻有不同的感悟,本文会一直更新下去。思考总结什么是单例模式单例模式(SingletonPattern)属于创建型模式,它提供了一种创建对象的最佳方式。单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。含义:这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。职责角度看,实例化与否不应该由使用方判断,而是应该由自己来判断。将实例化判断过程迁移到GetInstance()函数。Singleton类封装它的唯一实例,这样它可以严格地控制客户怎样访问它以
编程旅途是漫长遥远的,在不同时刻有不同的感悟,本文会一直更新下去。思考总结什么是单例模式单例模式(SingletonPattern)属于创建型模式,它提供了一种创建对象的最佳方式。单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。含义:这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。职责角度看,实例化与否不应该由使用方判断,而是应该由自己来判断。将实例化判断过程迁移到GetInstance()函数。Singleton类封装它的唯一实例,这样它可以严格地控制客户怎样访问它以
注:本文所有函数名为中文名,并不符合代码规范,仅供读者理解参考。GoroutineGo程不是OS线程,也不是绿色线程(语言运行时管理的线程),而是更高级别的抽象,一种特殊的协程。是一种非抢占式的简单并发子goroutine(函数、闭包、方法)。不能被中断,但有多个point可以暂停或重新进入。goroutine在它们所创建的相同地址空间内执行,特别是在循环创建go程的时候,推荐将变量显式映射到闭包(引用外部作用域变量的函数)中。fork-join并发模型Fork在程序中的任意节点,子节支可以与父节点同时运行。join在将来某个时候这些并发分支会合并在一起,这是保持程序正确性和消除竞争条件的关键
注:本文所有函数名为中文名,并不符合代码规范,仅供读者理解参考。GoroutineGo程不是OS线程,也不是绿色线程(语言运行时管理的线程),而是更高级别的抽象,一种特殊的协程。是一种非抢占式的简单并发子goroutine(函数、闭包、方法)。不能被中断,但有多个point可以暂停或重新进入。goroutine在它们所创建的相同地址空间内执行,特别是在循环创建go程的时候,推荐将变量显式映射到闭包(引用外部作用域变量的函数)中。fork-join并发模型Fork在程序中的任意节点,子节支可以与父节点同时运行。join在将来某个时候这些并发分支会合并在一起,这是保持程序正确性和消除竞争条件的关键
微服务架构微服务是一种开发软件的架构和组织方法,其中软件由通过明确定义的API进行通信的小型独立服务组成。这些服务由各个小型独立团队负责。微服务架构使应用程序更易于扩展和更快地开发,从而加速创新并缩短新功能的上市时间。将软件应用程序构建为一组独立、自治(独立开发、部署和扩展)、松耦合、面向业务能力(强调能力,而不是完成任务)的服务。为什么微服务软件系统需要借助进程间(服务间,应用程序间)通信技术?传统软件系统被进一步拆分为一组细粒度,自治和面向业务能力的实体,也就是微服务。强、弱类型接口服务API接口有强、弱类型之分。强类型接口 传统的RPC服务(定制二进制协议,对消息进行编码和解码),采用T
微服务架构微服务是一种开发软件的架构和组织方法,其中软件由通过明确定义的API进行通信的小型独立服务组成。这些服务由各个小型独立团队负责。微服务架构使应用程序更易于扩展和更快地开发,从而加速创新并缩短新功能的上市时间。将软件应用程序构建为一组独立、自治(独立开发、部署和扩展)、松耦合、面向业务能力(强调能力,而不是完成任务)的服务。为什么微服务软件系统需要借助进程间(服务间,应用程序间)通信技术?传统软件系统被进一步拆分为一组细粒度,自治和面向业务能力的实体,也就是微服务。强、弱类型接口服务API接口有强、弱类型之分。强类型接口 传统的RPC服务(定制二进制协议,对消息进行编码和解码),采用T
前言本人最近几年一直在学习并且实践云原生,也从测试转型到DevOps,公司的所有服务也从数据中心搬到云端,回顾过去几年学到的知识,觉得是时候总结一下了,所以准备以云原生为题材写下这一过程中所有学到的知识点,希望对大家有所帮助。在我带你开始云原生之旅前,需要入门一下golang,没办法,谁让它是云原生领域里正红的发紫的“角儿,从最底层的containerd,到编排层的Kubernetes,再到如今正红的发紫的Istio,随便拿出一个来都是golang写的。我相信你学了Golang之后,会发现它非常好用,library丰富,部署简单,容易上手,咱也不想成为资深开发,但我们自动化,写工具之类的还是需
前言本人最近几年一直在学习并且实践云原生,也从测试转型到DevOps,公司的所有服务也从数据中心搬到云端,回顾过去几年学到的知识,觉得是时候总结一下了,所以准备以云原生为题材写下这一过程中所有学到的知识点,希望对大家有所帮助。在我带你开始云原生之旅前,需要入门一下golang,没办法,谁让它是云原生领域里正红的发紫的“角儿,从最底层的containerd,到编排层的Kubernetes,再到如今正红的发紫的Istio,随便拿出一个来都是golang写的。我相信你学了Golang之后,会发现它非常好用,library丰富,部署简单,容易上手,咱也不想成为资深开发,但我们自动化,写工具之类的还是需
前言谈到持续集成工具就离不开众所周知的Jenkins,本文带你了解如何在Kubernetes上安装Jenkins,后续文章会带你深入了解如何使用k8spod作为Jenkins的buildagents。 准备需要一个running的KubernetesCluster,可以参考我前面的文章 云原生之旅-4)基础设施即代码使用Terraform创建Kubernetes 安装Step1:创建NamespaceapiVersion:v1kind:Namespacemetadata:name:jenkinsnamespace.yamlkubectlapply-fnamespace.yaml Step2: