首页 文章 精选 留言 我的

精选列表

搜索[双足行走],共9148篇文章
优秀的个人博客,低调大师

【双11狂欢背后】微服务注册中心如何承载大型系统的千万级访问?

一、问题起源 Spring Cloud架构体系中,Eureka是一个至关重要的组件,它扮演着微服务注册中心的角色,所有的服务注册与服务发现,都是依赖Eureka的。 不少初学Spring Cloud的朋友在落地公司生产环境部署时,经常会问: ●Eureka Server到底要部署几台机器? ●我们的系统那么多服务,到底会对Eureka Server产生多大的访问压力? ●Eureka Server能不能抗住一个大型系统的访问压力? 如果你也有这些疑问,别着急!咱们这就一起去看看,Eureka作为微服务注册中心的核心原理 下面这些问题,大家先看看,有个大概印象。带着这些问题,来看后面的内容,效果更佳: ●Eureka注册中心使用什么样的方式来储存各个服务注册时发送过来的机器地址和端口号? ●各个服务找Eureka Server拉取注册表的时候,是什么样的频率? ●各个服务是如何拉取注册表的? ●一个几百服务,部署上千台机器的大型分布式系统,会对Eureka Server造成多大的访问压力? ●Eureka Server从技术层面是如何抗住日千万级访问量的? 先给大家说一个基本的知识点,各个服务内的Eureka Client组件,默认情况下,每隔30秒会发送一个请求到Eureka Server,来拉取最近有变化的服务信息 举个例子: ●库存服务原本部署在1台机器上,现在扩容了,部署到了3台机器,并且均注册到了Eureka Server上。 ●然后订单服务的Eureka Client会每隔30秒去找Eureka Server拉取最近注册表的变化,看看其他服务的地址有没有变化。 除此之外,Eureka还有一个心跳机制,各个Eureka Client每隔30秒会发送一次心跳到Eureka Server,通知人家说,哥们,我这个服务实例还活着! 如果某个Eureka Client很长时间没有发送心跳给Eureka Server,那么就说明这个服务实例已经挂了。 光看上面的文字,大家可能没什么印象。老规矩!咱们还是来一张图,一起来直观的感受一下这个过程。 二、Eureka Server设计精妙的注册表存储结构 现在咱们假设手头有一套大型的分布式系统,一共100个服务,每个服务部署在20台机器上,机器是4核8G的标准配置。 也就是说,相当于你一共部署了100 * 20 = 2000个服务实例,有2000台机器。 每台机器上的服务实例内部都有一个Eureka Client组件,它会每隔30秒请求一次Eureka Server,拉取变化的注册表。 此外,每个服务实例上的Eureka Client都会每隔30秒发送一次心跳请求给Eureka Server。 那么大家算算,Eureka Server作为一个微服务注册中心,每秒钟要被请求多少次?一天要被请求多少次? ●按标准的算法,每个服务实例每分钟请求2次拉取注册表,每分钟请求2次发送心跳; ●这样一个服务实例每分钟会请求4次,2000个服务实例每分钟请求8000次; ●换算到每秒,则是8000 / 60 = 133次左右,我们就大概估算为Eureka Server每秒会被请求150次; ●那一天的话,就是8000 * 60 * 24 = 1152万,也就是每天千万级访问量 好!经过这么一个测算,大家是否发现这里的奥秘了? ●首先,对于微服务注册中心这种组件,在一开始设计它的拉取频率以及心跳发送频率时,就已经考虑到了一个大型系统的各个服务请求时的压力,每秒会承载多大的请求量。 ●所以各服务实例每隔30秒发起请求拉取变化的注册表,以及每隔30秒发送心跳给Eureka Server,其实这个时间安排是有其用意的。 按照我们的测算,一个上百个服务,几千台机器的系统,按照这样的频率请求Eureka Server,日请求量在千万级,每秒的访问量在150次左右。 即使算上其他一些额外操作,我们姑且就算每秒钟请求Eureka Server在200次~300次吧。 所以通过设置一个适当的拉取注册表以及发送心跳的频率,可以保证大规模系统里对Eureka Server的请求压力不会太大。 关键问题来了,Eureka Server是如何保证轻松抗住这每秒数百次请求,每天千万级请求的呢? 要搞清楚这个,首先得清楚Eureka Server到底是用什么来存储注册表的?三个字,看源码 接下来咱们就一起进入Eureka源码里一探究竟: ●如上图所示,图中的这个名字叫做registry的CocurrentHashMap,就是注册表的核心结构。看完之后忍不住先赞叹一下,精妙的设计! ●从代码中可以看到,Eureka Server的注册表直接基于纯内存,即在内存里维护了一个数据结构。 ●各个服务的注册、服务下线、服务故障,全部会在内存里维护和更新这个注册表。 ●各个服务每隔30秒拉取注册表的时候,Eureka Server就是直接提供内存里存储的有变化的注册表数据给他们就可以了。 ●同样,每隔30秒发起心跳时,也是在这个纯内存的Map数据结构里更新心跳时间。 一句话概括:维护注册表、拉取注册表、更新心跳时间,全部发生在内存里!这是Eureka Server非常核心的一个点。 搞清楚了这个,咱们再来分析一下registry这个东西的数据结构,大家千万别被它复杂的外表唬住了,沉下心来,一层层的分析! ●首先,这个ConcurrentHashMap的key就是服务名称,比如“inventory-service”,就是一个服务名称。 ●value则代表了一个服务的多个服务实例。 ●举例:比如“inventory-service”是可以有3个服务实例的,每个服务实例部署在一台机器上。 再来看看作为value的这个Map: Map<String, Lease<InstanceInfo>> ●这个Map的key就是服务实例的id ●value是一个叫做Lease的类,它的泛型是一个叫做InstanceInfo的东东,你可能会问,这俩又是什么鬼? ●首先说下InstanceInfo,其实啊,我们见名知义,这个InstanceInfo就代表了服务实例的具体信息,比如机器的ip地址、hostname以及端口号。 ●而这个Lease,里面则会维护每个服务最近一次发送心跳的时间; 三、Eureka Server端优秀的多级缓存机制 假设Eureka Server部署在4核8G的普通机器上,那么基于内存来承载各个服务的请求,每秒钟最多可以处理多少请求呢? ●根据之前的测试,单台4核8G的机器,处理纯内存操作,哪怕加上一些网络的开销,每秒处理几百请求也是轻松加愉快的。 ●而且Eureka Server为了避免同时读写内存数据结构造成的并发冲突问题,还采用了 多级缓存机制 来进一步提升服务请求的响应速度。 ●在拉取注册表的时候: ●首先从ReadOnlyCacheMap里查缓存的注册表。 ●若没有,就找ReadWriteCacheMap里缓存的注册表。 ●如果还没有,就从内存中获取实际的注册表数据。 ●在注册表发生变更的时候: ●会在内存中更新变更的注册表数据,同时过期掉ReadWriteCacheMap。 ●此过程不会影响ReadOnlyCacheMap提供人家查询注册表。 ●一段时间内(默认30秒),各服务拉取注册表会直接读ReadOnlyCacheMap ●30秒过后,Eureka Server的后台线程发现ReadWriteCacheMap已经清空了,也会清空ReadOnlyCacheMap中的缓存 ●下次有服务拉取注册表,又会从内存中获取最新的数据了,同时填充各个缓存。 多级缓存机制的优点是什么? ●尽可能保证了内存注册表数据不会出现频繁的读写冲突问题。 ●并且进一步保证对Eureka Server的大量请求,都是快速从纯内存走,性能极高。 为方便大家更好的理解,同样来一张图,大家跟着图再来回顾一下这整个过程: 四、总结 ●通过上面的分析可以看到,Eureka通过设置适当的请求频率(拉取注册表30秒间隔,发送心跳30秒间隔),可以保证一个大规模的系统每秒请求Eureka Server的次数在几百次; ●同时通过纯内存的注册表,保证了所有的请求都可以在内存处理,确保了极高的性能; ●另外,多级缓存机制,确保了不会针对内存数据结构发生频繁的读写并发冲突操作,进一步提升性能; 上述就是Spring Cloud架构中,Eureka作为微服务注册中心可以承载大规模系统每天千万级访问量的原理。 原文发布时间为:2018-11-28 本文作者:中华石杉 本文来自云栖社区合作伙伴“Java后端技术”,了解相关信息可以关注“Java后端技术”。

优秀的个人博客,低调大师

双创周 | 阿里云携房企在蓉将建设100个智能社区

近期,成都兴城人居集团和阿里云达成全面合作,双方将基于阿里云数据中台、阿里云IoT智能人居物联网平台,共同打造“智慧人居平台”,构建智慧社区、未来酒店、智慧康养等新兴智能城市生态。 “智慧人居平台”将如何让我们的生活变得更美好呢? 首先,你将可用声音控制电视、灯光、空调、电器,伴随使用的时间的增长,房子还会智能学习主人的生活习惯变得“能听会看”,可以认识主人、陪伴主人、照顾主人。 其次,小区将成为一个认识你的朋友,自动为我们开门,保护安全,手机上就可以缴纳物业费、停车费,发布报修、投诉、家政等信息。 最后,房产由于科技将会产生额外升值。食材会自动送到家甚至不再需要冰箱,健康小屋让医生就在身边,白天上班家中老人和小孩的情况也可以实时掌握。 未来五年内,兴城人居将与阿里云一起,完善建设旗下100多个智能社区,为100万以上用户提供更便捷、更贴心

优秀的个人博客,低调大师

阿里云与华数传媒“双剑合璧”,你的生活将有这些改变

6月25日,华数传媒与阿里巴巴旗下的优酷在全国有线电视网络平台、IPTV平台接入运营方面达成合作协议。同时,华数也与阿里云开展了一系列合作。重点聚焦在四大领域。 四大领域 1、物联网络服务 在浙江共建LoRaWAN网络,阿里云将提供Link广域网管理平台,助力华数为其用户提供各种低功耗广域网的物联网服务。 2、智能城市 华数将基于阿里云Link物联网平台,打造城市级物联网商用平台。 3、智能家居 华数将用自身的牌照、内容以及家庭大屏和客厅场景入口与阿里云丰富的大文娱内容资源、Link生活物联网平台以及天猫精灵这样的爆款硬件产品进行优势互补。 4、视频内容 优酷将提供可用于有线数字点播与有IPTV平台信息网络传播权的视频点播节目内容,为华数的用户能观看到优酷的影视剧、原创综艺等优质内容。 其实,华数传媒与阿里云早在2015年就已经围绕云计算、大数据技术

优秀的个人博客,低调大师

汉王引领双核手写识别新纪元 开启3G人脸开机时代

近日,汉王科技在北京宣布,专门用于手写识别领域的“双核心”技术、短句行识别技术和应用于手机的“人脸开机”技术将正式推向市场。 据介绍,此三项技术基于汉王科技企业的核心发展理念,密切结合当前信息化时代要求和经济形势,用于满足当前手写识别功能、效率急需提速,以及用于取代目前应用手机加密软件的需求。有业内人士表示,这些技术的发布,将对国际智能化识别领域产生深远的影响。 据了解,目前业内的手写技术提供商主要支持工整汉字的识别功能,而对自由书写体(即用户自然书写的、字形具有不同程度变形的笔迹)的识别率并不理想,汉王针对这种现状,利用电磁屏笔迹采集设备,历时8个月,共采集了10余万套中文短句样本,并基于这些自由书写体样本进行算法训练、优化,最终整合了新旧2套算法的优势,实现了对自由书写体的准确识别。 汉王手写双核心技术,是一种最新的手写识别核心以及分割技术,为用户提供更加高效、自然的录入手段,具有适应能力强、识别率更高的特点,尤其对行、草书和倒插笔识别效果极佳,避免用户在进行手写输入时反复切换输入法带来的不便,也避免了每书写一个字都要等待识别结果,然后再进行后续书写的麻烦。目前该技术支持GB2312和GBK字符集。 双核心识别 而短句行识别技术,是一种可自动识别中文、英文、数字以及标点混合的整行句子新技术手段,具有识别率高、识别速度快以及使用方便等特点。目前,汉王的这两项技术已成功应用于诺基亚S60系列手机。 短句行手写识别 此外,汉王凭借着领先的技术优势,率先研发出我国自主知识产权的人脸开机识别系统。这一系统不仅提供了国内该领域的行业技术标准,更肩负着培育行业新市场的大任。早在年初,汉王便成功推出具有完全自主知识产权的汉王人脸识别系统。 PC人脸开机 手机人脸开机 汉王副总裁徐冬坚大胆预测,未来的3G手机将会大量采用人脸开机技术,以取代目前使用的所有手机加密软件。作为行业规则制定者,汉王科技希望借助人脸识别系统,在手机领域开辟一片属于自己的蓝海市场。 汉王副总裁徐冬坚 人脸识别在国内被认为是“早上八九点钟的太阳”,要想让消费者和厂商接受这一全新技术,还有待于进一步的推广普及。这就要求汉王不仅要提供完善的一揽子产品解决方案,更要通过各种手段,倡导普及一种全新的工作生活习惯与方式。 今年,移动通信技术在全国人民的翘首期盼中,经历了历史性的变革。自“电信日”起,我国便已正式进入了3G时代。而众多国内外知名企业,更是希望借助3G平台,充分发挥自身技术优势,满足客户全方位的服务需求,领跑3G时代。 作为国际手写识别技术领域领军企业,汉王科技一直秉承自主创新的发展理念,历经16年已成为本行业领军者。诺基亚、三星、LG、索爱、多普达等全球80%知名手机品牌均已选择汉王手写技术,在手写识别领域占有90%以上市场份额。不仅如此,通过不懈努力,日前,汉王还新开发出“多国文字”的手写识别技术,能够识别韩、日、泰、俄文等40多种外文,识别率高达99.6%以上,并成功应用在国外市场。 在敏锐洞察到3G时代的巨大商机后,汉王科技便着手进行适应3G时代发展要求的识别技术的研发并取得了革命性的突破。相信随着3G技术的不断普及与深入发展,汉王识别技术必将引领新一轮的技术更新革命! 原文出处:科技行者 转载请与作者联系,同时请务必标明文章原始出处和原文链接及本声明。

优秀的个人博客,低调大师

双区升级 全球互联 青云QingCloud开放广东2区及亚太2区

深圳,2018年1月10日—— 企业级云服务商青云QingCloud(www.qingcloud.com)日前宣布,同时开放两个公有云可用区——广东2区(GD2)和亚太2区(AP2)(详情:http://t.cn/RQzko1r)。广东2区进一步提升华南地区的基础设施规模和服务品质,实现全模云架构全面落地。亚太2区提供国际通路定点优化能力,加速助力国内企业业务出海。至此,QingCloud自营数据中心达到12个,全面覆盖华北、华东、华南,并辐射亚太地区,公有云全球版图得到进一步延伸。 青云QingCloud CEO 黄允松 广东2区是青云QingCloud第7个自营公有云可用区,基于五星级运营商数据中心构建,采用QingCloud“全模云”架构,提供多项全新产品服务,覆盖公有云、托管云、混合云等多种服务交付模式,满足用户对不同业务场景的云计算需求。广东2区的开放运营,进一步提升了华南地区的服务质量,也标志着QingCloud整体服务体系和交付能力的再次全面提升。其技术亮点如下: •五星级数据中心支撑,最高等级基础设施保障; •基于城域环网的冗余备份架构,保障服务高可用; •多线动态BGP出口带宽,智能动态调度保障最优连接质量; •“全模云”架构完整落地,全维度支持业务发展。 青云QingCloud产品及运营副总裁 林源 亚太2区作为继亚太1区之后,青云QingCloud在香港自主运营的第二个可用区,其开放运营将大幅提升QingCloud在亚太地区的基础设施保障能力,增强面向国际市场的整体服务能力,为国内企业出海及海外本地企业提供高效稳定的云计算及网络通信服务。 亚太2区同样采用最新的系统架构,支持SDS 2.0、SDN 2.0及全闪存架构,向用户交付全系列青云QingCloud云资源及服务,同时提供托管云及混合云服务,为用户面向海外业务的定向网络通信实现优化服务。主要有以下两点优势: •一跳直连国际骨干网,国际运营商BGP全覆盖; •提供国际定点优化服务,全方位助力企业业务出海。 通过亚太骨干网的多线BGP对接能力,青云QingCloud已经成功助力国内客户登陆东南亚市场,实现与东南亚多家本土运营商的直连,大幅提升东南亚本地用户的网络访问速度。同时,用户的业务系统也通过QingCloud骨干网建立起与国内托管云核心系统之间的稳定通信。 青云QingCloud产品兼运营副总裁林源表示,两大新区的开放运营、全模云架构的落地,不仅标志着区域服务能力的再次提升,也是QingCloud实现国际化战略的关键布局。亚太2区的开放,实现了国内外网络互联的最优化,为有出海需求的企业和海外本地企业提供定向网络优化,全面提升国际市场的服务能力。 本文出处:畅享网 本文来自云栖社区合作伙伴畅享网,了解相关信息可以关注vsharing.com网站。

优秀的个人博客,低调大师

在JAVA中使用DCL双检查锁机制实现单例的多线程安全

元旦放假期间学代码,我都感动我自己啦。 试过了,OK的。 package demo.thread; public class MyObject { private static MyObject myObject ; private MyObject() { } public static MyObject getInstance() { try { if (myObject != null){ } else { Thread.sleep(3000L); synchronized (MyObject.class) { if (myObject == null){ myObject = new MyObject(); } } } } catch (InterruptedException e) { e.printStackTrace(); } return myObject; } } package demo.thread; public class MyThread extends Thread { @Override public void run() { System.out.println(MyObject.getInstance().hashCode()); } } package demo.thread; public class Run { public static void main(String[] args) { // TODO Auto-generated method stub MyThread t1 = new MyThread(); t1.start(); MyThread t2 = new MyThread(); t2.start(); MyThread t3 = new MyThread(); t3.start(); } }

优秀的个人博客,低调大师

Docker自动化双主MySQL-01:安装docker并使用docker 获取镜像

nstall with yum1.shell>sudo yum update2.添加dockeryum$ sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'[dockerrepo]name=Docker Repositorybaseurl=https://yum.dockerproject.org/repo/main/centos/7/enabled=1gpgcheck=1gpgkey=https://yum.dockerproject.org/gpgEOF 3.安装docker的包shell>sudo yum install docker-engine4.将docker加到服务里面$ sudo systemctl enable docker.service5.启动docker$ sudo systemctl start docker6.在容器中运行镜像看docker是否安装成功 $ sudo docker run --rm hello-world 二、使用docker 获取镜像:1.查看docker是否运行:[root@localhost ~]# ps aux | grep dockerroot 8229 1.6 0.6 944968 49924 ? Ssl 10:54 0:13 /usr/bin/dockerdroot 8235 0.0 0.1 367832 12216 ? Ssl 10:54 0:00 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --shim docker-containerd-shim --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --runtime docker-runcroot 8827 0.0 0.0 112652 960 pts/1 S+ 11:07 0:00 grep --color=auto docker2.使用docker获取镜像: 可以使用 docker pull 命令来从仓库获取所需要的镜像 [root@localhost ~]#docker pull centos[root@localhost ~]# docker images 有哪些镜像REPOSITORY TAG IMAGE ID CREATED SIZEcentos latest 0584b3d2cf6d 6 weeks ago 196.5 MBhello-world latest c54a2cc56cbb 5 months ago 1.848 kB3.查看后台运行docker镜像[root@localhost ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESe793eb3f32c2 centos "/bin/bash" 3 minutes ago Up 3 minutes alisql4.进入docker里面[root@localhost ~]# docker exec -it e793eb3f32c2 /bin/bash[root@e793eb3f32c2 /]# 查看容器:[root@localhost opt]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESe793eb3f32c2 centos "/bin/bash" 6 hours ago Up 6 hours alisql将容器提交为镜像[root@localhost opt]# docker commit -m "install alisql" -a "wjj" e793eb3f32c2 alisql/m:5.6.32sha256:3dff1697293ac450627ce4d6283c215315dcef3256d00206be5cabb831314780 其中, -m 来指定提交的说明信息,跟我们使用的版本控制工具一样; -a 可以指定更新的用户信息;之后是用来创建镜像的容器的 ID;最后指定目标镜像的仓库名和 tag 信息。创建成功后会返回这个镜像的 ID 信息。使用 docker images 来查看新创建的镜像。 [root@localhost opt]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEalisql/m 5.6.32 3dff1697293a About a minute ago 2.181 GB 之后,可以使用新的镜像来启动容器 导出镜像:[root@localhost opt]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEalisql_m 5.6.32 e1b266255ad5 2 minutes ago 2.181 GB 3dff1697293a 8 minutes ago 2.181 GB 53c6ea2f5444 30 minutes ago 5.117 GBcentos latest 0584b3d2cf6d 6 weeks ago 196.5 MBhello-world latest c54a2cc56cbb 5 months ago 1.848 kB [root@localhost docker_images]# docker save -o alisql_m.tar alisql/m:5.6.32[root@localhost docker_images]# docker save -o alisql_s.tar alisql/s:5.6.32 save opt/alisql_m.tar的意思是把image 保存在opt目录里并命令为alisql_m.tar 使用新的镜像来启动容器:[root@localhost docker_images]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEalisql/s 5.6.32 f502d6c3c562 3 minutes ago 2.456 GBalisql/m 5.6.32 ee0aea15ad83 4 minutes ago 2.497 GB docker run 就是运行容器的命令,具体格式我们会在后面的章节讲解,我们这里简要的说明一下上面用到的参数-ti:这是两个参数,一个是 -i:交互式操作,一个是 -t 终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终端。使用新的镜像来启动容器:[root@localhost ~]# docker run -t -i alisql_s:5.6.32 /bin/bash 827 docker ps -a 828 docker rm -f 79cab3e7e30a 829 docker rmi bc9edf41d6b2docker exec -it 容器名 执行脚本或者获取脚本位置 docker build -t ma . [root@localhost docker_mysql_5.6]# docker ps -aq0de7852c69928e3134e3ed0c4cbd4c39e33267f51a8e755b56d33b2836ea88dd6a8cf960d38476a689b658bfe5f40850d5c9fbe08387[root@localhost docker_mysql_5.6]# docker ps -aq | xargs docker rm -f0de7852c69928e3134e3ed0c4cbd4c39e33267f51a8e755b56d33b2836ea88dd6a8cf960d38476a689b658bfe5f40850d5c9fbe08387

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册