在几乎所有的现代编程语言中,垃圾收集器都是一个复杂的系统,为了在不影响用户程序的情况下回收废弃的内存需要付出非常多的努力,Java 的垃圾收集机制是一个很好的例子,Java 8 中包含线性、并发、并行标记清除和 G1 四个垃圾收集器,想要理…
在几乎所有的现代编程语言中,垃圾收集器都是一个复杂的系统,为了在不影响用户程序的情况下回收废弃的内存需要付出非常多的努力,Java 的垃圾收集机制是一个很好的例子,Java 8 中包含线性、并发、并行标记清除和 G1 四个垃圾收集器,想要理…
前言 我们都知道go处理并发能力很强,是因为它有goroutine,go自己实现了一套自己的调度器去调用自己的goroutine。本文就来聊聊go底层的调度器具体工作原理,在介绍调度器之前,我们需要掌握一些跟操作系统的相关概念。 基本概念 …
前言 相信大家对redis都非常熟悉,它是一个非常高性能的单线程缓存数据库。但大家对它的每种数据结构十分都非常熟悉吗?还是仅仅停留在只使用它的string结构,把它当memcached来使用呢?其实善用它的每种数据结构的话,确实能给我们日常…
简介 Kubernetes 是 Google 团队发起的一个开源项目,它的目标是管理跨多个主机的容器,用于自动部署、扩展和管理容器化的应用程序,主要实现语言为 Go 语言。Kubernetes 的组件和架构还是相对较复杂的,如果我们一上来就…
前言 在前面的文章中相信大家对docker的使用有了一个基本的了解,但实际在docker上部署我们的应用的时候不禁要思考以下问题: 1.在同一台机器启动了多个容器,每个容器上运行着不同的业务,而这些业务相互之间如何互相访问吗? 2.在不同机…
前言 在前面的文章中我们学习了docker的基本使用,我们知道如果在宿主服务器上如果以root用户去运行一个docker,docker容器里运行的也是root用户,那么在容器中的root用户跟宿主机中的root用户是不是同一个用户呢?两者之…
前言 最近几年docker技术特别火,在各大互联网公司招聘要求上都会写这么一项“熟悉docker,k8s相关技术”。我网上搜了一下,原来docker早在2013年已经发布,由golang语言开发的现象级项目。那么,docker到底是什么东西…
1.1 为什么要使用服务发现 设想下,我们写了一些通过REST API或者Thrift API调用某个服务的代码,为了发起这个请求,代码需要知道服务实例的网络地址(IP 地址和端口号)。在传统运行在物理机器上的应用中,某个服务实例的网络地址…
一. JWT是什么 JSON Web Token(JWT)是目前最流行的跨域身份验证解决方案。简单说,OAuth 就是一种授权机制。数据的所有者告诉系统,同意授权第三方应用进入系统,获取这些数据。系统从而产生一个短期的进入令(token),…
在前面的文章中我们讲到了微服务架构,当我们把一个庞大的单体系统拆分成多个微服务之后,把每个微服务部署在不同的服务器上。这时候系统的架构如下图所示: 上图架构存在扩展性差的问题。不同的微服务一般有不同的网络地址,而外部客户端可能需要调用多个服…