Browsed by
月份:2020年7月

浅谈服务治理与微服务

浅谈服务治理与微服务

閱讀本文約花費: 12 (分鐘)近期都在谈微服务,本人也正在做相关的工作,应领导要求做了一个微服务的分享,本篇文章主要来源于分享的PPT,所以有些简单,有问题可以在下面留言,大家 一起讨论。 本篇文章先简单介绍了互联网架构的演变,进而介绍了服务化,最后再介绍微服务,微服务是服务治理的升级也是互联网架构的进一步延伸。 互联网架构演变 一体架构 在计算机软件发展早期,一般桌面软件都是采用这种架构,不管是界面还是业务处理还是数据处理都放到一个包中。这种其实谈不上架构,但也可以说是很好的架构,因为它足够简单。 mvc架构 但随着浏览器的出现便产生了web应用,web应用的特点是界面部分是显示在浏览器中,服务处理是在服务容器中的,页面显示一般用css+js+html技术来处理,而后端可以用java、php等语言,这就产生了前后端分离。对于web系统,一体架构难以满足前后端分离的开发需求,因而便产生了MVC架构。 MVC才算的上真正意义上的架构,因为它除了解决了前后端分离问题,还引入了一种全新的开发模式,用一种业务逻辑、数据、界面显示分离的方法组织代码,使得整个应用层次更加分明,而且各个层次之间不但减低了耦合性,还提高了各个层次的可重用性。 但随着应用规模的不断扩大,应用模块不断增加,整个应用也显得越来越臃肿,维护起来也更加困难,因此便又产生了多应用架构。 多应用架构 多应用架构很简单,就是把…

Read More Read More

内网畅外网墙–再聊Nginx访问权限管理

内网畅外网墙–再聊Nginx访问权限管理

閱讀本文約花費: 6 (分鐘)接昨天。 low address bits of 192.168.101.0/16 are meaningless in /usr/local/nginx/conf/nginx.conf:122 网关 网关在网络层以上实现网络互连,是复杂的网络互连设备。网关既可以用于广域网互连,也可以用于局域网互连。 A:IP地址范围 192.168.1.1~192. 168.1.254,子网掩码 255.255.255.0B:IP地址范围 192.168.2.1~192. 168.2.254,子网掩码 255.255.255.0 计算所得(见下述计算方式):A 网络地址为 192.168.1.0,B网络地址为 192.168.2.0。 两个网络中的主机处在不同的网络里,而要实现这两个网络之间的通信,则必须通过网关。如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。 网关 pk. 路由器 网关:一个大概念,不具体特指一类产品,只要连接两个不同的网络的设备都可以叫网关 路由器:连接两个或多个网络的硬件设备,路由器很显然能够实现网关的功能 缺省网关:是子网与外网连接的设备,通常是一个路由器。PC本身不具备路由寻址能力,所以PC要把所有的IP包发送到一个默认的中转地址上面进行…

Read More Read More

Nginx 访问权限管理

Nginx 访问权限管理

閱讀本文約花費: 4 (分鐘)前段时间,团队开放了组件库演示环境,由于存在一些小伙伴在外地办公(只能外网或者 vpn 到内网)。所以,为了安全考虑,设想是否可以通过 Nginx 做一些访问限制呢?当然,答案是肯定的。 诉求整理: 内网:为了便利性,随意访问,不设限制; 外网:通过指定的用户名和密码访问(当然,要求秘钥的保密性)。 增加认证 这个很简单,使用 Nginx 的 ngx_http_auth_basic_module 模块,即可完成。 ngx_http_auth_basic_module 模块允许通过使用“HTTP基本身份验证”协议验证用户名和密码来限制对资源的访问。 上述 auth_basic 、auth_basic_user_file 作用域均为 http, server, location, limit_excep。 对于密码形式,其支持(具体可以查看参考链接 Nginx 相关模块信息): 用 crypt() 函数加密; 可以使用 Apache HTTP Server发行版中的 “htpasswd” 实用程序或 “openssl passwd” 命令生成; 使用基于 MD5 的密码算法(apr1)的 Apache 变体进行散列; 由 RFC 2307&nbsp…

Read More Read More

去阿里面试被问:如果是MySQL引起的CPU消耗过大,你会如何优化?

去阿里面试被问:如果是MySQL引起的CPU消耗过大,你会如何优化?

閱讀本文約花費: 4 (分鐘) 链接:https://www.cnblogs.com/YangJiaXin/p/10933458.html 目录 谁在消耗cpu?祸首是谁? 用户 IO等待 产生影响 如何减少CPU消耗? 减少等待 减少计算 升级cpu 谁在消耗cpu? 用户+系统+IO等待+软硬中断+空闲 image image 祸首是谁? 用户 用户空间CPU消耗,各种逻辑运算 正在进行大量tps函数/排序/类型转化/逻辑IO访问… 用户空间消耗大量cpu,产生的系统调用是什么?那些函数使用了cpu周期? IO等待 等待IO请求的完成 此时CPU实际上空闲 如vmstat中的wa 很高。但IO等待增加,wa也不一定会上升(请求I/O后等待响应,但进程从核上移开了) image image 产生影响 用户和IO等待消耗了大部分cpu 吞吐量下降(tps) 查询响应时间增加 慢查询数增加 对mysql的并发陡增,也会产生上诉影响 image 如何减少CPU消耗? 减少等待 减少IO量 SQL/index,使用合适的索引减少扫描的行数(需平衡索引的正收益和维护开销,空间换时间) 提升IO处理能力 加cache/加磁盘/SSD image 减少计算 减少逻辑运算量 避免使用函数,将运算转移至易扩展的应用服务器中如substr等字符运算,dateadd/datesub等日期运算,abs等…

Read More Read More

我是如何一步一步监控公司MySQL的每一个操作?

我是如何一步一步监控公司MySQL的每一个操作?

閱讀本文約花費: 11 (分鐘)作为一个程序员,闲下来还是喜欢学习钻研一些新奇的技术,canal就成了很好的研究对象,一不小心就监控了公司MySQL的一举一动的 一、canal是个啥? canal是阿里开发的一款基于数据库增量日志解析,提供增量数据订阅与消费的框架,整个框架纯JAVA开发,目前仅支持Mysql和MariaDB(和mysql类似)。 那什么是数据库增量日志? MySQL的日志种类是比较多的,主要包含:错误日志、查询日志、慢查询日志、事务日志、二进制日志。而MySQL数据库所发生的数据变更(DML(data manipulation language)数据操纵语言,也就是我们熟悉的增删改),都会以二进制日志(binary log)形式存储。 二、canal原理 在介绍canal原理之前,我们先来回顾一下MySQL主从同步的原理,这或许会让你更好的理解canal的工作机制。 1、MySQL主从同步原理: MySQL主从同步也叫读写分离,可以提升数据库的负载和容错能力,实现数据库的高可用 先来分析一张MySQL主从同步原理图: image 以上图片源自网络,如有侵权联系删除 master节点操作过程: 当master节点数据发生更改后(delete、update、insert,还是创建函数、存储过程等操作),向binary log中写入记录日志,这些记录又叫做二进制日志事件…

Read More Read More

无语,我差点被面试官怼坏了,又给我问到MySQL索引

无语,我差点被面试官怼坏了,又给我问到MySQL索引

閱讀本文約花費: 23 (分鐘)前一阵子,又跑出去搞了一场面试,心态算是崩了,关于MySQL索引的原理及使用被面试官怼的体无完肤,立志要总结一番,然后一直没有时间(其实是懒……),准备好了吗? image 一、MySQL中索引的语法 创建索引 在创建表的时候添加索引 在创建表以后添加索引 注意: 1、索引需要占用磁盘空间,因此在创建索引时要考虑到磁盘空间是否足够 2、创建索引时需要对表加锁,因此实际操作中需要在业务空闲期间进行 根据索引查询 删除索引 查看表中的索引 查看查询语句使用索引的情况 二、索引的优缺点 优势:可以快速检索,减少I/O次数,加快检索速度;根据索引分组和排序,可以加快分组和排序; 劣势:索引本身也是表,因此会占用存储空间,一般来说,索引表占用的空间的数据表的1.5倍;索引表的维护和创建需要时间成本,这个成本随着数据量增大而增大;构建索引会降低数据表的修改操作(删除,添加,修改)的效率,因为在修改数据表的同时还需要修改索引表; 三、索引的分类 常见的索引类型有:主键索引、唯一索引、普通索引、全文索引、组合索引 1、主键索引:即主索引,根据主键pk_clolum(length)建立索引,不允许重复,不允许空值; 2、唯一索引:用来建立索引的列的值必须是唯一的,允许空值 3、普通索引:用表中的普通列构建的索引,没有任何限制 4、全文索引:用大文本对象的列构建的索引(…

Read More Read More

苹果放弃英特尔芯片,为什么会打击美国计算机产业?

苹果放弃英特尔芯片,为什么会打击美国计算机产业?

閱讀本文約花費: 16 (分鐘)今年6月22日,苹果公司在一年一度的全球开发者大会 WWDC 上,宣布彻底放弃英特尔公司(Intel)的 CPU,改用自己设计的 ARM 芯片。 上一篇文章已经分析过了,苹果为什么要这样做。主要原因是,整个苹果战略是围绕移动端(iPhone)构建的,它现在想把移动端和桌面端合成一个生态,自己完全控制所有硬件和软件,不愿再让 CPU 这样的核心部件受制于英特尔了。 今天接着往下谈,这个”换芯”决定有什么后果。 表面上看,这是苹果公司的”家务事”,但是实际上牵动各方的利益,产生一系列的连锁反应,动摇长久以来主导行业的 Wintel 联盟,甚至会影响到美国的竞争优势。 一、英特尔的反应 苹果宣布换芯以后,英特尔仅仅发了一个简短的声明。 “苹果公司与我们有多个业务领域的合作,我们将继续为他们提供支持。……我们相信,基于 Intel 的 PC 将为全球客户提供最佳的体验。” 言下之意,这只是一件小事,不用大惊小怪。市场似乎也同意这种观点,英特尔股价当天小幅下跌,没过几天又涨回去了。 为什么英特尔觉得影响不大? 因为它的利润主要来自服务器 CPU,2019年占到利润总额的一半。个人电脑 CPU 的利润只占到三分之一,而 MacOS 只占全世界桌面操作系统市场的17%,…

Read More Read More

使用Kubernetes实现高级调度技术

使用Kubernetes实现高级调度技术

閱讀本文約花費: 14 (分鐘)使用Kubernetes这样的高级容器编排工具的优势之一就是,它的调度程序非常灵活。这为用户提供了广泛的选择,可以用来指定将Pod分配给满足条件的特定工作站节点的环境,而不仅仅基于节点的可用资源。为了解释Kubernetes如何决定将pod放置在正确的主机上,我们可以看一下Kubernetes master及一些组件的简化图: 主API(kube-apiserver)是一种提供对集群需求和当前状态进行读/写的工具。像调度程序这样的组件可以使用主API检索当前状态信息,应用一些逻辑和计算,并使用有关所需状态的新信息更新API(例如,指定要将哪个节点安排到新pod,或者指定哪个pod应该移动到另一个节点)。另外,集群用户和管理员可以更新集群状态或通过Kubernetes仪表板查看它,该仪表板对外提供API。CI / CD管道还可以使用API创建新资源或修改现有资源。 其他调用api的主要角色是名为“kubelets”的代理节点,它在工作节点上管理容器运行状态(通常为Docker)。当Kubelet判断出要报告的主机预期状态与其实际状态之间存在差异时,它将启动或终止需要的容器以达到主API描述的目标状态。Kubelets经常查询API,或者观察它们的变化,这就是为什么Kubernetes对更新和更改的响应几乎是即时的。(几秒钟)。 正如我们所看到的,Kub…

Read More Read More

苹果电脑为什么要换 CPU:Intel 与 ARM 的战争

苹果电脑为什么要换 CPU:Intel 与 ARM 的战争

閱讀本文約花費: 12 (分鐘)三个月前,新款 iPad Pro 发布,支持触摸板和鼠标。 上图的黑点就是鼠标。苹果公司显然打算,平板电脑当作笔记本使用。 我们知道,iPad 的操作系统跟 iPhone 是一样的,都是基于 iOS。如果 iOS 可以用于笔记本,就意味着可以跟桌面系统 MacOS 统一了。如果 MacBook 和 iPhone 都用同一个操作系统,App 就能通用了。 苹果公司显然也是这么打算的。几天后的6月22日将举行 WWDC(苹果全球开发者大会)。媒体报道,苹果公司将在那一天宣布,更换 Mac 电脑的 CPU,从 Intel 公司的 x86 架构改成 ARM 架构。 一旦 Mac 跟 iPhone 使用同样架构的 CPU,那就铺平了统一操作系统的道路。操作系统无法通用的最主要原因,就是 CPU 架构不同。 本文回顾苹果公司的 CPU 架构变化历史,帮助大家理解这件事的技术含义,以及未来的影响。 一、CPU 架构是什么 CPU 的全称是”中央处理单元”,它是计算机的核心,计算都由它来完成。但是,CPU 本身只是一个概念,每家芯片公司都有自己的具体实现。 不同的 CPU 设计实现,就称为” CPU 架构”(CPU architecture)。 不同的 CPU 架构有不同的指令集,彼此不通用,这导致运行在上面…

Read More Read More