Service Mash

Service Mash 定义 A service mesh, like the open source project Istio, is a way...

4 minute read

K8S基础

K8S,必知必会 Docker 和容器技术:在学习 Kubernetes 之前,你需要了解 Docker 和容器技术。Docker 是一种流行的容器化平台,它允许你将应用程序和服务打包成轻量级的容器。学习 Docker 将帮助你理解 Kubernetes 的基本概念和工作原理。 Linux 基础知识:Kubernetes 运行在...

12 minute read

K8S进阶

K8S 进阶 资源负载,进阶实战 Pod Pause容器 每个Pod里运行着一个特殊的被称之为Pause的容器,其他容器则为业务容器,这些业务容器共享Pause容器的网络栈和Volume挂载卷. 原则上,任何人只需要创建一个父容器就可以配置docker来管理容器组之间的共享问题。这个父容器需要能够准确的知道如何去创建共享运行环境的容器,还能管理这些容器的生命周期。为了实现这个父容器的构想,kubernetes中,用pause容器来作为一个pod中所有容器的父容器。这个pause容器有两个核心的功能: 第一,它提供整个pod的Linux命名空间的基础。 第二,启用PID命名空间,它在每个pod中都作为PID为1进程,并回收僵尸进程。 在ghost容器中同时可以看到pause和nginx容器的进程,并且pause容器的PID是1。而在kubernetes中容器的PID=1的进程即为容器本身的业务进程。 纽带,将所有容器连接起来 最先启动 暂停 为pod内的容器创建共享的网络/存储 只允许...

2 minute read

架构重构

架构的演化大多通过架构重构来完成。 主要难点体现: 业务已上线(不能停止服务) 相关方多 旧架构的约束 旧数据,旧依赖,旧标准规范 从一大堆纷繁复杂的问题中识别出真正要通过架构重构来解决的问题,集中力量快速解决,而不是想着通过架构重构来解决所有的问题。 判断到底是采取架构重构还是采取系统优化 ? 一个简单的做法:假设我们现在需要从 0 开始设计当前系统,新架构和老架构是否类似?如果差异不大,说明采取系统优化即可;如果差异很大,那可能就要进行系统重构了. 那原来发现的那些非架构重构问题怎么办呢? 重构完,可以再启动多个项目进行优化

1 minute read

Mysql如何计算索引高度

InnoDB 非叶子节点上没有实际的数据 叶子节点上才有实际的数据 叶子节点之间有指针串联指向下一个叶子节点,这样能够提升范围查询的效率 聚簇索引(Clustered) 在InnoDB使用了聚簇索引(Clustered),即所有二级索引聚集在主键索引上,对InnoDB存储引擎表的任何访问,最终一定要搜索主键索引树. 在InnoDB中,二级索引(所有不是主键索引的索引)上没有实际的数据,取而代之的是主键索引的值。 如果是基于二级索引的查询,会先在二级索引上搜索得到主键索引的值,然后再去主键索引树上搜索,得到最终的行数据. 例如:一个表有两个字段 ‘id’,’name’,id是主键,name建立了索引,查询name得到id,再通过id获取到name。 意味至少有一次索引查找,可能会有两次索引查找,其中一定有一次主键索引查找。 ` 在InnoDB中,主键要设计的尽量小,主键越小,二级索引也会越小。 满足需求的情况下,SMALLINT优先于INT,INT优先于BITINT,INTEGER类型优先于VARCHAR类型。 `...

1 minute read

FeignClient原理

Feign远程调用的基本流程 https://github.com/OpenFeign/feign/tree/master/core/src/main/java/feign 在微服务启动时,Feign会进行包扫描,对加@FeignClient注解的接口,按照注解的规则,创建远程接口的本地JDK Proxy代理实例。然后,将这些本地Proxy代理实例,注入到Spring IOC容器中。当远程接口的方法被调用,由Proxy代理实例去完成真正的远程访问,并且返回结果。 ` @FeignClient 远程调用接口 → JDK Proxy 动态实例代理 → InvokeHandler →...

1 minute read

面向功能拆分的(常见)微内核架构及其实现

基本架构 微内核架构包含两类组件: 核心系统(core system) 核心系统负责和具体业务功能无关的通用功能,例如模块加载、模块间通信等; 插件模块(plug-in modules)。 插件模块负责实现具体的业务逻辑; 核心系统 Core System 功能比较稳定,不会因为业务功能扩展而不断修改,插件模块可以根据业务功能的需要不断地扩展。 微内核的架构本质就是将变化部分封装在插件里面,从而达到快速灵活扩展的目的,而又不影响整体系统的稳定. 设计关键点 插件管理核心系统需要知道当前有哪些插件可用,如何加载这些插件,什么时候加载插件。...

1 minute read

SOA和微服务

关于SOA与微服务的区别大多有以下几个观点: 观点1:SOA 是一种架构理念,而微服务是 SOA 理念的一种具体实现方法 例如,“微服务就是使用 HTTP RESTful 协议来实现 ESB 的 SOA”“使用 SOA 来构建单个系统就是微服务”和“微服务就是更细粒度的 SOA”。...

1 minute read