Browsed by
标签:Shell

浅谈服务治理与微服务

浅谈服务治理与微服务

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

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

分布式服务框架 Zookeeper

分布式服务框架 Zookeeper

閱讀本文約花費: 1 (分鐘) ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。 1- 分布式服务框架 Zookeeper入门学习 https://coolshell.me/articles/zookeeper-intro-01.html 2- 分布式服务框架Zookeeper介绍、原理及应用 https://coolshell.me/articles/zookeeper-intro-02.html 3- ZooKeeper实际应用案例-开发实战 https://coolshell.me/articles/zookeeper-intro-03.html 4- Zookeeper典型应用场景介绍 https://coolshell.me/articles/zookeeper-intro-04.html 5- 分布式服务协调框架ZooKeeper https://coolshell.me/articles/zookeeper-intro-05.html 6- Zookeeper到底是干嘛的 https://coolshell.me/articles/zookeeper-intr…

Read More Read More

王教授到底跟多少人约了炮?

王教授到底跟多少人约了炮?

閱讀本文約花費: 5 (分鐘)随着今天下午5时30分的钟声敲响,2020年高考也正式落下了帷幕。由于疫情,今年的高考可以说一波三折,受影响的不仅仅是高考学子,大学同样受到了极大地影响,大部分学校都选择了在网上进行教学。今天的故事也由此开始。 作为全国排名前十的高校,中山大学选择了用一种有点怪的方式为刚结束高考的学子进行庆祝。今日上午,中大副教授王晓玮按照惯例进行线上教学,可能一时疏忽在课间10分钟休息时王教授并没有关闭直播,故事开始了。 一位被王教授备注为“南沙地产8”的女性突然发消息给王教授说自己“牙痒想咬人”,仅仅看这两句话还让单纯的我有点丈二和尚摸不着头脑。接下来王教授的回复让我们瞬间明白了,王教授回复“你肚子大了还能做爱吗”。原来两人是准备干羞羞的事,真是羞死我了。 接下来,被王教授备注为“琳琳”的一女性又发消息过来约其吃饭,王教授回复“什么时候都可以”。由于并没有直接说出意图,我们不好污人清白。 几乎转瞬间,被王教授备注为“南沙地产10号”的女性又发消息过来,根据两人对话我们可知他们的计划是“12点吃饭看个电影然后找个酒店做爱”。 如上文所说,王教授一时疏忽忘了关直播,这些对话通过屏幕向所有学生进行了直播。对于刚满18岁的我来说,上面的对话尺度实在太大,看的丞相脸红脖子粗的。对于中大的孩子们来说那更不用讲了,这种现场直播的黄色小电影一般人根本扛不住。 短短十分钟,竟然至少…

Read More Read More

如何阅读OpenStack源码

如何阅读OpenStack源码

閱讀本文約花費: 28 (分鐘)原文:https://github.com/int32bit/openstack-workflow http://www.talkwithtrend.com/Article/240391 1 关于该项目 本项目使用在线绘图工具web sequencediagrams完成,目标是图形化OpenStack的所有操作流程,通过操作序列图能快速学习Openstack的工作原理,理清各个组件的关系,运维人员也能根据操作序列图进行更精确的故障定位和排查. 注意,该操作序列图基于L版OpenStack源码,未来版本的操作可能会有变化,请以最新版的源码为准,该项目提供的序列图仅供参考。 2 OpenStack基础 2.1 OpenStack组件介绍 OpenStack是一个IaaS层的云计算平台开源实现,其对标产品为AWS。最开始OpenStack只有两个组件,分别为提供计算服务的Nova以及提供对象存储服务的Swift,其中Nova不仅提供计算服务,还包含了网络服务、块存储服务、镜像服务以及裸机管理服务。之后随着项目的不断发展,从Nova中根据功能拆分为多个独立的项目,如nova-volume拆分为Cinder项目提供块存储服务,nova-image拆分为Glance项目,提供镜像存储服务,nova-network则是neutron的前身,裸机管理也从Nova中分…

Read More Read More

有没有发现:她们都很像?

有没有发现:她们都很像?

閱讀本文約花費: 8 (分鐘)文/六神磊磊懒得管段落了,就这么一句一句写。苟晶,陈春秀,还有王娜娜、罗彩霞……这些,都是高考被人冒名顶替的女孩。看了她们全部人的采访,你有没有发现一点:她们都很像?我说的“像”,不只是说她们都来自农村、家庭贫困。也不只是说都是女孩。还包括她们都给人同一种感觉——很老实、很良善。我当记者,也算采访过各类人。提意见的、闹事的,等等,什么人什么性格,基本上几眼能看透。这些被顶替的女孩子,她们个个毫无“狼性”,反而“羊性”很足。不会搞事,不会发狠。你看她们的采访,虽然也都坚持要讨个说法,但是说到那些伤害她们的人的时候,没有什么特强的憎恨、复仇的情绪,没有什么老子要搞出个天大的事那种感觉,没有牙尖嘴利,没有口吐芬芳,没有打滚痛骂,甚至让我们都觉得:骂得不够痛快!你看陈春秀说起那个顶替她的人——陈双双。称别人还是用的“人家”。还说她“很漂亮”,说看照片就感觉自己“好像跟人家不是一个档次的”。还多次自己哽咽起来。 这要换了我,一定早已经问候对方十八代外加先人板板了。可陈春秀还反复哽咽,还说人家漂亮。苟晶说起那个下黑手顶替自己的老师,居然不断地说,心疼他“头发都白了”。还反复说这老师“教语文还不错”。并且苟晶还一再地讲:“我针对的不是老师你个人。”“这么多年,我也没有想过去针对你。”好像还怕话重一点,就会伤了那个老师的心一样。 我都迷惑了:到底谁是受害者?你还用得着…

Read More Read More

云原生计算基金会宣布Harbor项目正式毕业

云原生计算基金会宣布Harbor项目正式毕业

閱讀本文約花費: 7 (分鐘)专门为云原生软件构建可持续生态系统的云原生计算基金会(简称CNCF)于本月23日(当地时间)正式宣布,Harbor已经成为第11个正式毕业的项目。从孵化阶段、发展成熟一路走向正式毕业,Harbor项目不仅获得更高的采用率、更加开放的治理流程与成熟的功能,同时也在社区发展、可持续性及项目包容性方面做出坚定的承诺。Harbor是一种开源代码注册表,可通过策略与基于角色的访问控制实现工件保护,扫描镜像内容使其免受漏洞侵害,最后对镜像进行可信签名。作为云原生计算基金会下辖的孵化项目,Harbor成为保障合规性、性能与互操作性的好帮手,可帮助用户跨Kubernetes与Docker等云原生计算平台,持续安全地管理各类工件。目前,Harbor已经被引入众多知名企业的生产体系当中,包括CaiCloud、中国移动、Hyland Software、京东、Mulesoft、三星SDS、Trend Micro以及VMware等等。就在上个月,Harbor 2.0版本全面推出。此版本增加了对开放容器计划(OCI)工件的支持,允许用户在其中存储大量云原生工件,例如容器镜像、Helm图表、OPA以及Singularity等。开发人员可以使用OCI索引中的OCI工件或打包工件,轻松享受Harbor项目带来的策略选项、复制功能以及基于角色的访问控制等成果。云原生计算基金会CTO/CO…

Read More Read More

【K8S】基于Docker+K8S+GitLab/SVN+Jenkins+Harbor搭建持续集成交付环境(环境搭建篇)

【K8S】基于Docker+K8S+GitLab/SVN+Jenkins+Harbor搭建持续集成交付环境(环境搭建篇)

閱讀本文約花費: 51 (分鐘)环境搭建概述 1.K8S是什么? K8S全称是Kubernetes,是一个全新的基于容器技术的分布式架构领先方案,基于容器技术,目的是实现资源管理的自动化,以及跨多个数据中心的资源利用率的最大化。 如果我们的系统设计遵循了kubernetes的设计思想,那么传统系统架构中那些和业务没有多大关系的底层代码或功能模块,都可以使用K8S来管理,我们不必再费心于负载均衡的选型和部署实施问题,不必再考虑引入或自己开发一个复杂的服务治理框架,不必再头疼与服务监控和故障处理模块的开发。总之,使用kubernetes提供的解决方案,会大大减少开发成本,同时可以将精力更加集中于业务本身,而且由于kubernetes提供了强大的自动化机制,所以系统后期的运维难度和运维成本大幅降低。 2.为什么要用K8S? Docker 这个新兴的容器化技术当前已经被很多公司所采用,其从单机走向集群已成必然,而云计算的蓬勃发展正在加速这一进程。Kubernetes 作为当前唯一被业界广泛认可和看好的 Docker 分布式系统解决方案。可以预见,在未来几年内,会有大量的新系统选择它,不管是运行在企业本地服务器上还是被托管到公有云上。 3.使用K8S有哪些好处? 使用Kubernetes就是在全面部署微服务架构。微服务架构的核心就是将一个巨大的单体应用分解为很多小的互相连接的微服务,一个微服…

Read More Read More

k8s常用命令实操

k8s常用命令实操

閱讀本文約花費: 12 (分鐘)查看集群信息: [[email protected] pods]# kubectl cluster-infoKubernetes master is running at http://localhost:8080KubeDNS is running at http://localhost:8080/api/v1/proxy/namespaces/kube-system/services/kube-dns To further debug and diagnose cluster problems, use ‘kubectl cluster-info dump’. 查看更详细的可以用kubectl cluster-info dump 查看各组件状态 [[email protected] pods]# kubectl -s http://localhost:8080 get componentstatusesNAME                              STATUS           &n…

Read More Read More

Jstack实战排查线上CPU占用过高的问题

Jstack实战排查线上CPU占用过高的问题

閱讀本文約花費: 3 (分鐘)1、通过top命令查看占用CPU过高的进程,信息如下: BashCopy 发现占用CPU最高的进程PID是:30718,此时我们知道这个java应用占用CPU最高,但不知道是应用中哪个地方的代码造成的。一个进程中包含若干线程,最想知道的就这个进程的资源占用详情了。此时仍使用top命令继续查看,格式:top -p pid -H。 BashCopy 发现PID=3427的线程占用CPU最高,找到了线程号,就要想办法知道java的线程名称了。这时我们就需要用到jstack命令了,jstack pid,可以连接一个正在运行的进程,试一下看看。 BashCopy dump出了所有的java线程,此处只显示了部分线程信息。还可以通过命令将线程信息dump到文件中,从中可以看到线程的详细信息,其中nid就是线程的ID,是16进制的,把PID=3427转换成16进制。 BashCopy 使用grep过滤一下关键字为d63的线程 BashCopy 将线程信息dump到文件中 BashCopy 这样就找到了这个线程,根据线程名称“sendText”可以直接定位到java源码: JavaCopy 从源码中可以看到,这里使用了一个线程从队列中获取信息,使用的while循环,会导致cpu一直空转,造成占用率很高,到此就查到问题点了。从刚才的实战中也可以看到,创建线程的时候自定义…

Read More Read More