关于域名解析:系统设计之DNS优化

作用将域名解析成对应的IP地址,把域名解析成对应的机器IP地址,便于咱们的申请去进行拜访.能够了解为DNS是存储一个域名和IP对应关系的数据库. 域名和IP的关系多对多关系. 服务器类型根域名服务器: 13个.A : 主根. 其余 : 辅根.中国领有根服务器的镜像服务器. 域名解析流程www.baidu.com hosts - > com -> baidu.com -> www.baidu.com本地域名 - > 顶级域名服务器 - > 二级域名 -> 三级域名看了下面的步骤,咱们其实能够设想一下,根域名服务器的压力到底有多大,简直寰球的人上网,甚至不止是人,比如说服务器都会先申请根域名,这块必定是须要优化解决的.每次拜访新域名的时候,浏览器和操作系统会提前把一些域名信息缓存下来,每次查问的时候先去看缓存.浏览器(先看缓存)OS(先看缓存) hostsLDNS(缓存)LDNS 三级域名 -> 二级域名 -> 顶级域名服务器 残缺内容请点击下方链接查看:https://developer.aliyun.com/article/1193556 版权申明:本文内容由阿里云实名注册用户自发奉献,版权归原作者所有,阿里云开发者社区不领有其著作权,亦不承当相应法律责任。具体规定请查看《阿里云开发者社区用户服务协定》和《阿里云开发者社区知识产权爱护指引》。如果您发现本社区中有涉嫌剽窃的内容,填写侵权投诉表单进行举报,一经查实,本社区将立即删除涉嫌侵权内容。援用

April 19, 2023 · 1 min · jiezi

关于域名解析:IoT物联网时代如何优化你的网络-DNS域名解析服务设备接入类

IoT物联网时代,如何优化你的网络- DNS域名解析服务1.域名解析服务设施以拜访指定域名和端口形式接入IoT物联网平台时,遇到的第一个问题就是接入服务器域名的DNS解析。域名(Domain Name),是由一串用点分隔的名字组成的互联网上某台计算机或某组计算机的标识,它的目标是为了不便人们更简略便捷地拜访互联网上的服务。在理论的零碎实现中,域名通过DNS(Domain Name System)零碎转化为服务器的IP地址,以不便机器通过IP进行寻址和通信。上述行为,咱们称之为域名解析(Domain Name System)。 递归查问递归查问时如果客户端所询问的本地域名服务器不晓得被查问的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其余顶级域名服务器持续收回查问,直到查问到后果后,再层层传递回来。迭代查问迭代查问时如果客户端所询问的本地域名服务器不晓得被查问的域名的IP地址,那么会告知下一级域名服务器的列表,供客户端询问。理论场景实际上,在DNS查问过程中,本地DNS服务器会代理客户端做迭代查问。但本地DNS没有域名解析后果的决定权,仅仅代理了用户向权威DNS获取域名解析后果的过程。本地DNS上有缓存模块,当指标域名存在缓存解析后果并且TTL未过期时,本地DNS会返回缓存后果,否则,本地DNS会一级一级地迭代查问各个层级域名的权威DNS直至获取最终残缺域名的解析后果。同时客户端也会依据TTL值做缓存的机制,这样能够缩小查问的次数,放慢域名解析过程。咱们以拜访 pk.iot-as-mqtt.cn-shanghai.aliyuncs.com 为例,一次残缺的域名解析流程包含: 1.设施终端向本地DNS发动域名解析申请;2.本地DNS在获取到域名解析申请后首先从Root hints获取根域名(.)服务器的地址;3.获取了根域名服务器地址后本地DNS向根域名服务器发动DNS解析申请;4.根域名服务器返回顶级域名(.com)服务器地址;5.随后本地DNS向顶级域名(.com)服务器发动解析申请,并失去二级域名(aliyuncs.com)服务器的地址;6.本地DNS向二级域名(aliyuncs.com)服务器发动解析申请,并最终取得 pk.iot-as-mqtt.cn-shanghai.aliyuncs.com 的IP地址信息;7.本地DNS将递归查问取得的IP地址信息依据TTL缓存并返回给设施终端;8.设施终端向目标IP发动网络申请2.DNS域名解析试验2.1 DNS域名解析如果你要拜访域名 pk.iot-as-mqtt.cn-shanghai.aliyuncs.com,首先要通过DNS查出它的IP地址是139.196.135.135。咱们能够应用dig命令来查看域名对应的IP列表,具体如下:上图展现了以后mac电脑从本地DNS服务器获取到域名的IP列表,TTL值(Time to live)是18s。 2.2 DNS解析残缺过程DNS服务器依据域名的层级进行分级查问,就是从根域名开始,顺次查问每一级域名的NS记录,直到查到最终的IP地址,过程大抵如下: 1.从"根域名服务器"查到"顶级域名服务器"的NS记录和A记录(IP地址)2.从"顶级域名服务器"查到"二级域名服务器"的NS记录和A记录(IP地址)3.从"二级域名服务器"查出"主机名"的IP地址其中,每一级域名都有本人的NS记录,NS记录指向该级域名的域名服务器。这些服务器晓得下一级域名的各种记录。咱们通过dig +trace能理解残缺解析过程,具体如下:上图展现了DNS残缺过程, 1.首先Mac电脑从本地DNS服务器获取到根域名(.root)服务器列表,2.其次从其中一台根域名服务器(198.41.0.4)获取到顶级域名(.com)服务器列表3.再次从其中一台顶级域名服务器(192.48.79.30)获取到二级域名(aliyuncs.com)服务器列表4.最初从其中一台二级域名服务器获取到了指标域名的IP列表,共3个IP地址3.物联网场景DNS解析3.1 域名解析潜在问题当咱们理解DNS域名解析服务残缺过程后,会发现传统域名解析存在以下问题: 域名劫持域名劫持始终是困扰许多开发者的问题之一,其体现即域名A应该返回的DNS解析后果IP1被歹意替换为了IP2,导致A的拜访失败或拜访了一个不平安的站点。调度不精准除了域名劫持问题,基于传统Local DNS的域名解析还会带来域名调度精准性的问题。对于相似CDN域名拜访这类须要按地区、运营商进行智能解析调度的场景,精准调度的诉求是非常强烈的。解析失效滞后局部业务场景下开发者对域名解析后果变更的失效工夫十分敏感(这部分变更操作是开发者在权威DNS上实现的),比方当业务服务器受到攻打时,咱们须要最疾速地将业务IP切换到另一组集群上,这样的诉求在传统域名解析体系下是无奈实现的。提早大DNS首次查问或缓存过期后的查问,须要递归遍历多个DNS服务器以获取最终的解析后果,这减少了网络申请的前置延时工夫。特地是在挪动互联网场景下,挪动网络品质参差不齐,弱网环境的RTT工夫可能高达数百毫秒,对于一次一般的业务申请而言,上述延时是十分惨重的累赘。另一方面,弱网环境下的解析超时、解析失败等景象不足为奇,如何正当优化DNS解析对于整体网络拜访品质的晋升至关重要。3.2 阿里云HTTPDNS服务阿里云HTTPDNS服务正在这样的背景下应运而生,为咱们提供一个更平安、稳固、高效的递归DNS服务代理了域名解析的过程。 HTTPDNS应用HTTP协定进行域名解析,代替现有基于UDP的DNS协定,域名解析申请间接发送到HTTPDNS服务端,从而绕过运营商的本地DNS,将终端用户的IP信息间接交付给权威DNS,防止本地DNS的坐标烦扰,用户在权威DNS变更的解析后果将疾速同步给HTTPDNS,笼罩原有的缓存记录,帮忙用户实现秒级的域名解析切换。 3.3 物联网场景DNS实战但咱们在IoT物联网平台控制台创立产品后,会生成对应设施接入指定域名,参考下图:接下来咱们要在HTTPDNS的控制台,增加IoT物联网设施的接入域名解析服务,参考下图:而后,通过间接拜访HTTPDNS的IP获取设施接入域名的IP列表,参考下图:最初,IoT设施就能够间接拜访IP列表中的一个IP,建设与IoT物联网平台的MQTT长连贯通道。 物联网平台产品介绍详情:https://www.aliyun.com/product/iot/iot_instc_public_cn 阿里云物联网平台客户交换群

March 9, 2023 · 1 min · jiezi

关于域名解析:什么时候需要查询DNS记录如何查询DNS解析记录

当搭建一个新网站时,DNS查问工具对查问网站DNS解析记录方面很有帮忙。除了在设置新网站时有用外,也会在更新DNS记录、设置邮件服务器等场景会应用到DNS查问工具。 搭建新网站时配置DNS记录是搭建新网站时必须执行的工作之一。简直所有的主机商都提供专用的DNS服务器,您能够在 DNS服务器上来设置站点的DNS记录。如果你想应用其余公司的DNS服务器,则须要将主机商的NS记录指向到新的DNS服务器。 更新DNS记录时当批改DNS记录时,某些DNS服务器可能会缓存之前的DNS记录。因而,当批改DNS记录后,您应该应用DNS查问工具来查看服务器是否已失效。大多数服务器最终会删除之前的记录,但流传可能须要一点工夫能力失效。 设置邮件服务器时电子邮件是由几个独立的邮件服务器组成的。MX记录指定负责解决发往收件人域名的邮件服务器。同样,为了缩小垃圾邮件,SPF数据存储在TXT记录中。例如,Gmail和Yahoo邮箱能够别离更新他们的邮件服务器,因而DNS记录须要做出更改,这时就会用到DNS查问工具来查看DNS记录设置状况。 如何查问DNS解析记录?网上DNS查问工具比拟多,然而能查问的解析记录类型不多,这里分享一个在线收费查问DNS解析记录的工具,该工具能够疾速查出寰球不同的地区的DNS映射节点对你的域名解析速度,及域名DNS信息,也能查问域名不同类型的解析记录。 查问A记录办法 输出须要查问的域名,抉择”A”类型,即可查问到该域名指向的IP地址。  查问A记录办法 查问CNAME或TXT记录办法 当申请SSL证书,应用DNS解析实现域名验证时,须要查问解析是否已失效就能够抉择CNAME或TXT类型查问。 输出:主机记录+域名,类型抉择CNAME或者TXT。当查问到的记录值与控制台中给出的记录值雷同时,则示意解析已失效,域名验证很快能通过。 查问CAA记录办法 申请SSL证书做域名验证时,如果发现DNS解析已失效,但域名验证迟迟未通过,可查看是否因为CAA记录中指定了颁发机构导致。 查问CAA记录,输出域名,类型抉择CAA,即可查问。 其余解析记录也可输出域名抉择对应类型查问后果。

December 23, 2022 · 1 min · jiezi

关于域名解析:域名解析

域名是为了不便记忆而专门建设的一套地址转换零碎,要拜访一台的服务器的互联网,最终还必须通过IP地址来实现,域名解析就是将域名从新转换为IP地址的过程。一个域名对应一个IP地址,一个IP地址能够对应多个域名;所以多个域名能够同时被解析到一个IP地址。域名解析须要由专门的域名解析服务器(DNS)来实现。 域名解析(Domain name resolution)是域名和IP地址之间的互相转换,人们习惯记忆域名来拜访网址,而机器只认IP。 解析过程,比方,一个域名为:abc.com,如果要拜访网站,就要进行解析,首先在域名注册商那里通过专门的DNS服务器解析到一个WEB服务器的一个固定IP上:211.214.1.XXX,而后,通过WEB服务器来接管这个域名,把abc.com这个域名映射到这台服务器上。那么,输出abc.com这个域名就能够实现拜访网站内容了.即实现了域名解析的全过程;

December 7, 2021 · 1 min · jiezi

关于域名解析:如何刷新本地的DNS缓存使域名解析尽快生效

因域名DNS解析系统结构起因,在域名DNS服务器和本地服务器上别离设置了DNS缓存更新工夫。如果你的域名从新更新了解析或者是域名须要刷新解析,你都能够应用以下办法来尽快使你的域名解析失效。办法1:在本地电脑上,操作系统的左下角->开始->运行,输出命令 ipconfig /flushdns 而后回车执行该命令即可。注:如果是windows vista操作系统,”运行”性能在”所有程序”->”附件”里能够找到。办法2:下载 DNS服务器设置刷新工具包下载后请依据压缩包内的应用阐明,抉择你的操作系统对应的版本,执行 “设置dns.bat” 文件,而后从新关上IE浏览器,再尝试拜访您的网站。 (留神,如果设置后你仍无奈失常拜访,请点击 “复原dns.bat” 文件,复原你之前的DNS设置)文章参考:https://www.niaoyun.com/docs/...

September 10, 2021 · 1 min · jiezi

关于域名解析:MaxCompute跨境访问加速解决方案

简介:MaxCompute联结寰球减速服务,为有跨境拜访需要的MaxCompute客户提供一套高效稳固的跨境拜访减速计划。MaxCompute联结寰球减速服务,为有跨境拜访需要的MaxCompute客户提供一套高效稳固的跨境拜访减速计划。 背景信息MaxCompute的大量出海客户,因为开发人员所在地和数据源地区不统一,常常须要进行跨境互访,在应用IDEA/ODPSCMD/SDK进行管控类作业提交、数据下载等申请时,网络抖动比拟大,可能会呈现被rst、重置连贯等问题。 具体场景包含两类: office在大陆,然而对应的MaxCompute终端节点在海内,例如须要从杭州拜访孟买的终端节点,如果间接应用office的公网进行调用对应的api进行业务创立,间接应用公网链路十分不稳固。office在海内,然而对应的MaxCompute终端节点在大陆,例如须要从孟买拜访上海的终端节点,也存在相似调用的状况。例:失常网络状况下,从杭州拜访印度(孟买)终端节点,网络连接超时。 解决方案计划架构 技术原理本解决方案依赖寰球减速服务。 寰球减速GA(Global Accelerator)是一款笼罩寰球的网络减速服务,寰球减速会为每个接入减速区域的地区调配一个减速IP,客户端流量通过减速IP就近从接入点进入阿里云减速网络。进入阿里云减速网络后,寰球减速能够智能抉择路由并主动实现网络调度,而后把客户端的网络拜访申请送达至最佳终端节点,避开公网的拥挤,达到缩小时延的成果。具体请参见寰球减速官网文档。 实现流程前提条件已创立MaxCompute我的项目。更多创立MaxCompute我的项目操作,请参见创立MaxCompute我的项目。 配置寰球减速服务用户能够依据寰球减速服务官网文档进行配置。本计划的配置步骤如下: 步骤一:创立寰球减速实例登录寰球减速治理控制台。在实例列表页面,单击创立减速实例。在购买页面,依据以下信息配置寰球减速实例,而后单击立刻购买。抉择购买寰球减速实例的规格。本计划抉择小型Ⅱ。抉择购买寰球减速实例的时长。本计划抉择1个月。具体规格类型及费用请参考寰球减速产品定价。 购买胜利后,返回至治理控制台。实例创立好,零碎会主动调配一个CNAME用于解析要减速的后端服务的域名,请记录下此CNAME用于后续域名解析时应用。 步骤二:购买并绑定根底带宽包根底带宽包提供了笼罩寰球的公网接入带宽和阿里云内网传输带宽。实现寰球减速您须要购买根底带宽包并将根底带宽包绑定到寰球减速实例。 在实例列表页面,单击购买根底带宽包。在购买页面,配置根底带宽包,而后单击立刻购买实现领取。具体规格类型及费用请参考寰球减速产品定价。 ⚠️留神:晋升海内区域到中国边疆的网络拜访品质,必须先提交跨境产品应用申请,否则无奈配置拜访国外地区减速。 本计划抉择 加强减速带宽,20Mb。 返回实例列表页面,单击已创立的寰球减速实例ID,单击带宽包治理页签,在根底带宽包区域,找到指标根底带宽包,单击操作列下的绑定。 绑定胜利后,根底带宽包的状态变成 可用。 步骤三:增加减速区域在购买根底带宽包后,您便能够增加减速区域,指定拜访后端服务的用户的所在地区并调配减速带宽。 实现以下操作,增加减速区域。 在实例列表页面,找到已创立的寰球减速实例,单击实例ID。单击减速区域页签,增加接入地区。在增加减速区域对话框,依据以下信息进行配置。地区:抉择拜访减速服务用户的所属地区。本计划抉择中国(杭州)。带宽:抉择减速服务的地区带宽。本计划输出20 Mbps。IP地址协定:抉择用户接入寰球减速服务的IP地址协定。本计划抉择IPv4。  单击确定。增加胜利后,寰球减速会在接入地区调配一个减速IP,用来减速用户拜访。步骤四:配置监听监听负责查看连贯申请。零碎会依据您指定的端口和协定转发来自客户端的入站连贯。 在实例详情页面,单击监听页签,而后单击增加监听。在配置监听和协定配置向导页面,依据以下信息配置监听。监听名称:输出监听的名称。协定:抉择监听的协定类型,客户可依据业务场景抉择。本计划抉择TCP。端口:本计划输出80。客户端亲和性:本计划抉择敞开。更多信息参考监听概述。 单击下一步配置终端节点组。访问控制:能够基于白名单/黑名单的模式进行配置不同的策略,对客户端申请进行准确管制,治理申请转发。阐明 目前,放弃访问控制白名单凋谢,如需应用请提交工单。 步骤五:设置终端节点组每个监听都关联一个终端节点组,通过指定要散发流量的地区,将终端节点组与监听关联。关联后,寰球减速会将流量调配到与监听关联的终端节点组内的最佳终端节点。 实现以下操作,设置终端节点组。 在节点组名称区域输出节点组名称。抉择终端节点组所属的地区,即申请要拜访的指标服务器的所属地区。本计划抉择 印度。抉择后端服务部署在阿里云还是非阿里云。本计划抉择 非阿里云。抉择开启或敞开放弃客户端源IP,本计划抉择开启放弃客户端源IP。配置终端节点。后端服务类型:抉择自定义域名。后端服务:输出要减速的MaxCompute地区外网Endpoint。本计划输出 service.ap-south-1.maxcompute.aliyun.com权重:输出终端节点的权重,权重取值范畴:0~255。寰球减速依据您配置的权重按比例将流量路由到终端节点。 留神 如果某个终端节点的权重设置为0,寰球减速将终止向该终端节点散发流量,请您审慎操作。单击下一步查看监听和终端节点组配置,确认无误后,再单击下一步。 本地绑定host增加寰球减速的配置后,在实例信息-减速区域tag下,找到减速IP。 之后,您必须通过本地绑定host形式,将对应域名解析到寰球减速调配的CNAME,使业务流量切换至寰球减速。 host增加示例: 1XX.XX.X.XX6(减速IP) service.ap-south-1.maxcompute.aliyun.com(后端服务域名)延时测试在接入地区(本计划为中国杭州)的电脑中关上命令行窗口。执行以下命令,查看数据包提早状况。curl -o /dev/null -s -w "time_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n" "http[s]://[:<端口>]"其中:time\_connect:连接时间,从开始到建设TCP连贯实现所用的工夫。time\_starttransfer:开始传输工夫。在客户端发出请求后,到后端服务器响应第一个字节所用的工夫。time\_total:连贯总工夫。客户端发出请求后,到后端服务器响应会话所用的工夫。经测试,应用寰球减速后,明显降低了中国杭州用户拜访印度(孟买)endpoint的提早。 应用MaxCompute配置实现后,能够进入MaxCompute客户端或Web-Console按源形式连贯至MaxCompute数据源。此时,MaxCompute已胜利实现高效稳固地跨境拜访。 平安防护相干问题为了无效进攻DDoS攻打,本计划能够通过与DDOS高防产品组合应用,利用DDOS高防产品无效进攻DDOS攻打,详细信息能够参考:跨地区Web平安减速 中的DDOS配置局部内容。 版权申明:本文内容由阿里云实名注册用户自发奉献,版权归原作者所有,阿里云开发者社区不领有其著作权,亦不承当相应法律责任。具体规定请查看《阿里云开发者社区用户服务协定》和《阿里云开发者社区知识产权爱护指引》。如果您发现本社区中有涉嫌剽窃的内容,填写侵权投诉表单进行举报,一经查实,本社区将立即删除涉嫌侵权内容。

August 10, 2021 · 1 min · jiezi

关于域名解析:重磅发布微服务引擎-MSE-专业版

简介:性能晋升 10 倍,更高的 SLA 保障,新用户限时抢购 8 折资源包。微服务引擎 MSE 专业版公布,反对 Nacos 2.0 ,相比根底版,专业版具备更高的 SLA 保障,性能晋升十倍,99.95%可用性,配置能力进一步加强,新用户首购8折,点击“查看详情”,理解更多相干信息。 继 Nacos 1.0 公布以来,Nacos 迅速被成千上万家企业采纳,并构建起弱小的生态。 然而随着用户深刻应用,逐步裸露一些性能问题,因而咱们启动了 Nacos 2.0 的隔代产品设计,时隔半年咱们终于将其全副实现,实测性能晋升10倍,置信能满足所有用户的性能需求。上面由我代表社区为大家介绍一下这款跨代产品。 Nacos 简介Nacos 是一个更易于构建云原生利用的动静服务发现、配置管理和服务治理平台。它 孵化于 阿里巴巴,成长于十年双十一的洪峰考验,积淀了简略易用、稳固牢靠、性能卓越的外围竞争力。 Nacos 2.0 架构全新2.0 架构不仅将性能大幅晋升10倍,而且内核进行了分层形象,并且实现插件扩大机制。 Nacos 2.0 架构档次如下图,它相比Nacos1.X的最次要变动是: 通信层对立到gRPC协定,同时欠缺了客户端和服务端的流量管制和负载平衡能力,晋升的整体吞吐。将存储和一致性模型做了充沛形象分层,架构更简略清晰,代码更加强壮,性能更加强悍。设计了可拓展的接口,晋升了集成能力,如让用户扩大实现各自的平安机制。Nacos2.0 服务发现降级一致性模型Nacos2架构下的服务发现,客户端通过Grpc,发动注册服务或订阅服务的申请。服务端应用Client对象来记录该客户端应用Grpc连贯公布了哪些服务,又订阅了哪些服务,并将该Client进行服务间同步。因为理论的应用习惯是服务到客户端的映射,即服务下有哪些客户端实例;因而2.0的服务端会通过构建索引和元数据,疾速生成相似1.X中的Service信息,并将Service的数据通过Grpc Stream进行推送。 Nacos2.0 配置管理降级通信机制配置管理之前用Http1.1的Keep Alive模式30s发一个心跳模仿长链接,协定难以了解,内存耗费大,推送性能弱,因而2.0通过gRPC彻底解决这些问题,内存耗费大量升高。 Nacos2.0 架构劣势Nacos2.0大幅升高了资源耗费,晋升吞吐性能,优化客户端和服务端交互,对用户更加敌对;尽管可观测性稍微降落,然而整体性价比十分高。 Nacos2.0 性能晋升因为Nacos由服务发现和配置管理两大模块形成,业务模型略有差别,因而咱们上面别离介绍一下具体压测指标。 Nacos2.0 服务发现的性能晋升服务发现场景咱们次要关注客户端数,服务数实例数,及服务订阅者数在大规模场景下,服务端在推送及稳固状态时的性能体现。同时还关注在有大量服务在进行高低线时,零碎的性能体现。 容量及稳固状态测试该场景次要关注随着服务规模和客户端实例规模上涨,零碎性能体现。 能够看到2.0.0版本在10W级客户端规模下,可能稳固的撑持,在达到稳固状态后,CPU的损耗非常低。尽管在最后的大量注册阶段,因为存在刹时的大量注册和推送,因而有肯定的推送超时,然而会在重试后推送胜利,不会影响数据一致性。 反观1.X版本,在10W、5W级客户端下,服务端齐全处于Full GC状态,推送齐全失败,集群不可用;在2W客户端规模下,尽管服务端运行状态失常,但因为心跳解决不及时,大量服务在摘除和注册阶段重复进行,因而达不到稳固状态,CPU始终很高。1.2W客户端规模下,能够稳固运行,但稳态时CPU耗费是更大规模下2.0的3倍以上。 频繁变更测试该场景次要关注业务大规模公布,服务频繁推送条件下,不同版本的吞吐和失败率。 频繁变更时,2.0和1.X在达到稳固状态后,均能稳固撑持,其中2.0因为不再有刹时的推送风暴,因而推送失败率归0,而1.X的UDP推送的不稳定性导致了有极小局部推送呈现了超时,须要重试推送。 Nacos2.0 配置管理的性能晋升因为配置是少写多读场景,所以瓶颈次要在单台监听的客户端数量以及配置的推送获取上,因而配置管理的压测性能次要集中于单台服务端的连贯数量以及大量推送的比拟。 Nacos2.0 连贯容量测试该场景次要关注不同客户端规模下的零碎压力。 Nacos2.0 最高单机可能撑持4.2w个配置客户端连贯,在连贯建设的阶段,有大量订阅申请须要解决,因而CPU耗费较高,但达到稳态后,CPU的耗费会变得很低。简直没有耗费。 反观Nacos1.X, 在客户端6000时,稳固状态的CPU始终很高,且GC频繁,次要起因是长轮训是通过hold申请来放弃连贯,每30s须要回一次 Response并且从新发动连贯和申请。须要做大量的上下文切换,同时还须要持有所有Request 和 Response。当规模达到1.2w客户端时,曾经无奈达到稳态,所以无奈撑持这个量级的客户端数。 Nacos2.0 频繁推送测试该场景关注不同推送规模下的零碎体现。 在频繁变更的场景,两个版本都处于6000个客户端连贯中。显著能够发现2.0版本的性能损耗要远低于1.X版本。 在3000tps的推送场景下,优化水平约优化了3倍。 Nacos2.0 性能论断针对服务发现场景,Nacos2.0可能在10W级规模下,稳固运行;相比Nacos1.X版本的1.2W规模,晋升约10倍。 ...

May 27, 2021 · 1 min · jiezi

关于域名解析:什么问题

一个域名对应多个IP地址是如何实现的 应用负载平衡实现,传统和du惯例做法,其余形式须要非凡解决。 1. 一个域名设定多个dns服务属或者服务器进行解析,同一个域名的每个解析都指向不同的ip地址,这样应答快的dns优先进行解析,这样就能保障最快定向到指定的网站空间去。个别域名管理机构只容许设定2到3个域名解析服务,所以再多就不反对了。2. 本人公司建设服务器,给本人进行dns解析服务,这样容易实现以上性能的操作。且数量不受限制,保障不同带宽的用户都能高速拜访,很多游戏运营商都是这么干的。

October 22, 2020 · 1 min · jiezi

聊一聊DNS劫持那些事

作为《DNS攻击防范科普系列》的最后一篇,今天我们来好好聊聊DNS劫持。先回顾一下DNS劫持的概念?DNS劫持即通过某种技术手段,篡改正确域名和IP地址的映射关系,使得域名映射到了错误的IP地址,因此可以认为DNS劫持是一种DNS重定向攻击。DNS劫持通常可被用作域名欺诈,如在用户访问网页时显示额外的信息来赚取收入等;也可被用作网络钓鱼,如显示用户访问的虚假网站版本并非法窃取用户的个人信息。那DNS劫持到底有多大的危害呢?我们来看两个真实的大事件: DNS劫持大事记事件1、《AWS route53 BGP路由泄漏事件》事件危害:据不完全统计,DNS劫持导致两个小时内有多个用户的以太坊钱包被转账清空,共计至少13000美元的资产被黑客盗取。事件还原: 事件发生在2018年4月24日。黑客针对四段分配给AWS,本应作为AWS route53 DNS服务器服务地址的IP空间(205.251.192.0/23, 205.251.194.0/23, 205.251.196.0/23, 205.251.198.0/23)发布了虚假的BGP路由,导致在BGP泄漏的两个小时期间,本应该AWS route53 DNS服务器的DNS查询都被重定向到了黑客的恶意DNS服务器。且黑客DNS劫持的目标十分明确,恶意DNS服务器只响应对myetherwallet.com的查询,其他域名的查询均返回SERVFAIL。一旦用户没有注意“网站不安全”的提示而访问myetherwallet.com登录自己的以太坊钱包,黑客就可以轻易获取用户的私钥进而窃取用户的数字货币资产。正常情况的DNS,和劫持后的DNS的情况,请参考如下攻击示意图(来自cloudflare博客):正常情况: BGP泄漏后: 事件2、《巴西银行钓鱼事件》事件危害:黑客诱导原本想访问正常银行网站的受害者访问到钓鱼网站,并恶意窃取受害者的银行账目密码信息。事件还原:事件发生在2018年。黑客利用D-Link路由器的漏洞,入侵了至少500个家用路由器。黑客入侵后更改受害者路由器上的DNS配置,将受害者的DNS请求重定向到黑客自己搭建的恶意DNS服务器上。黑客入侵后更改受害者路由器上的DNS配置,将受害者的DNS请求重定向到黑客自己搭建的恶意DNS服务器上,最终诱导原本想访问正常银行网站的受害者访问到钓鱼网站,并恶意窃取受害者的银行账目密码信息。 图片参考:bankinfosecurity 上面两个案例都是触目惊心啊。接下来我们来介绍一下黑客们是怎么做到DNS劫持的? DNS解析原理介绍劫持原理前,你需要先了解典型的DNS解析流程。 客户端发起递归DNS请求,本地递归DNS(大多数情况下为运营商DNS)或者公共DNS通过迭代查询请求多级的DNS权威服务器,并最终将查询结果返回给客户端。可以看到,一次完整的DNS查询:• 链路长。查询过程包含多次,多级的网络通信。• 参与角色多。查询过程涉及客户端,DNS递归服务器,权威服务器等角色。 在一次完整DNS查询链路的各个环节,其实都有可能被DNS劫持,下面的章节会逐一分析各种类型的DNS劫持。 DNS劫持分类我们按照客户端侧--递归DNS服务器--权威DNS服务器的路径,将DNS劫持做如下分类: 【一、本地DNS劫持】客户端侧发生的DNS劫持统称为本地DNS劫持。本地DNS劫持可能是: 黑客通过木马病毒或者恶意程序入侵PC,篡改DNS配置(hosts文件,DNS服务器地址,DNS缓存等)。黑客利用路由器漏洞或者破击路由器管理账号入侵路由器并且篡改DNS配置。一些企业代理设备(如Cisco Umbrella intelligent proxy)针对企业内部场景对一些特定的域名做DNS劫持解析为指定的结果。【二、DNS解析路径劫持】DNS解析过程中发生在客户端和DNS服务器网络通信时的DNS劫持统一归类为DNS解析路径劫持。通过对DNS解析报文在查询阶段的劫持路径进行划分,又可以将DNS解析路径劫持划分为如下三类: • DNS请求转发通过技术手段(中间盒子,软件等)将DNS流量重定向到其他DNS服务器。案例: ![图片来自《巫俊峰, 沈瀚. 基于旁路抢答机制的异网DNS管控实践. 电信技术[J]》](https://upload-images.jianshu... • DNS请求复制利用分光等设备将DNS查询复制到网络设备,并先于正常应答返回DNS劫持的结果。 案例:一个DNS查询抓包返回两个不同的应答。 • DNS请求代答网络设备或者软件直接代替DNS服务器对DNS查询进行应答。 案例:一些DNS服务器实现了SERVFAIL重写和NXDOMAIN重写的功能。 【三、篡改DNS权威记录】篡改DNS权威记录 我们这里指的黑客非法入侵DNS权威记录管理账号,直接修改DNS记录的行为。 案例:黑客黑入域名的管理账户,篡改DNS权威记录指向自己的恶意服务器以实现DNS劫持。 黑客黑入域名的上级注册局管理账户,篡改域名的NS授权记录,将域名授权给黑客自己搭建的恶意DNS服务器以实现DNS劫持。 黑客黑入域名的上级注册局管理账户,篡改域名的NS授权记录,将域名授权给黑客自己搭建的恶意DNS服务器以实现DNS劫持。(以上参考fireeye博客) DNS劫持应对策略DNS劫持在互联网中似乎已经变成了家常便饭,那么该如何应对各种层出不穷的DNS劫持呢?如果怀疑自己遇到了DNS劫持,首先要做的事情就是要确认问题。 如何确认DNS劫持查看路由器DNS配置是否被篡改。可以使用一些全网拨测的工具确认DNS劫持和其影响范围。在此隆重介绍一下,阿里的DNS域名检测工具于国庆后已经正式上线,地址是:https://zijian.aliyun.com/#/domainDetect  通过工具查看回复DNS应答的DNS服务器,确认DNS解析是否被重定向。• whatismydnsresolver http://whatismydnsresolver.com/移动端可以安装一些DNS相关的测试工具进行排查:• 安卓 ping & dns• IOS IOS iNetTools DNS劫持防范• 安装杀毒软件,防御木马病毒和恶意软件;定期修改路由器管理账号密码和更新固件。• 选择安全技术实力过硬的域名注册商,并且给自己的域名权威数据上锁,防止域名权威数据被篡改。• 选择支持DNSSEC的域名解析服务商,并且给自己的域名实施DNSSEC。DNSSEC能够保证递归DNS服务器和权威DNS服务器之间的通信不被篡改。阿里云DNS作为一家专业的DNS解析服务厂商,一直在不断完善打磨产品功能,DNSSEC功能已经在开发中,不日就会上线发布。• 在客户端和递归DNS服务器通信的最后一英里使用DNS加密技术,如DNS-over-TLS,DNS-over-HTTPS等。 ...

October 14, 2019 · 1 min · jiezi

阿里云-EMAS-HTTPDNS-联合函数计算重磅推出-SDNS-服务三大能力获得突破

1. 什么是 HTTPDNS ?传统的 DNS(Domain Name System)使开发者常面临着域名劫持、调度不精准的问题。 HTTPDNS 使用 HTTP 协议替换常用的 UDP 协议,完成客户端和递归 DNS 之间的域名解析过程,使得 HTTPDNS 服务器自身可以充当递归 DNS ,这样域名解析请求直接发送到阿里云的 HTTPDNS 服务器,可以绕过Local DNS运营商 ,避免由于 Local DNS 造成的域名劫持和调度不精准问题。产品原理如下图所示: 2.SDNS 软件定义解析虽然,HTTPDNS 在域名劫持和调度上,相对传统 DNS 已经有了质的飞跃,但是还存在如下不足:(1)【权威 DNS 存在不足】传统权威 DNS 的功能非常有限,且不同供应商提供的能力参差不齐,有优化空间;(2)【无法优化结果】HTTPDNS 充当递归DNS的功能时,无法改变权威 DNS 解析的结果;(3)【缺乏管理】客户域名解析缺乏集中管理,大型客户的域名解析往往分布在多个 DNS 供应商。 而 SDNS 不仅可以帮助开发者进一步优化调度质量,而且可以结合函数计算等能力,扩展 HTTPDNS 的服务边界,提供了用户自定义的处理逻辑,让业务更加方便灵活。 2.1 什么是 SDNS ? SDNS(Software-Defined Name System,简称SDNS)即软件定义解析,是在 HTTPDNS 的基础上,创造性的引入了自定义解析功能。其主要特性有:(1)支持客户端自定义参数输入;(2)HTTPDNS 服务器端结合自定义函数处理能力,支持客户实现复杂的自定义解析功能;(3)返回自定义解析结果给客户端。 2.2 SDNS 的三大能力 SDNS 在功能上完成了三个方面的飞跃: (1)自定义能力 域名解析过程,可以基于自身业务诉求和实际检测数据情况,改进权威解析结果,实现业务最优。(2)服务扩展能力 不再局限于域名解析调度。例如可以结合函数计算等云服务,丰富和扩展自身业务能力。(3)系统调度能力 由于域名解析过程可以定义,可以修改权威的结果,增加额外的数据信息,客户可以在现有服务的基础上,整合各个权威 DNS 服务,规避由于多权威 DNS 不规范所导致的调度质量不够高的问题。2.3 SDNS 使用指南 ...

July 16, 2019 · 2 min · jiezi

域名背后那些事

互联网中的地址是数字的 IP 地址,例如 61.135.169.125 就是百度的官网地址之一,如果每次访问百度都需要输入 IP 的话,估计到今天互联网都还没有走出鸿蒙阶段。 在网络发展历史上,最开始确实就是直接使用 IP 地址来访问远程主机的。早期联网的每台计算机都是采用主机文件(即我们俗称的 hosts 文件)来进行地址配置和解析的,后来联网机器越来越多,主机文件的更新和同步就成了很大的问题。于是,1983 年保罗·莫卡派乔斯发明了域名解析服务和域名系统,在 1985 年 1 月 1 日,世界上第一个域名 nordu.net 才被注册成功。 域名比 IP 地址更容易记忆,本质上只是为数字化的互联网资源提供了易于记忆的别名,就像在北京提起「故宫博物院」就都知道指的是「东城区景山前街 4 号」的那个大院子一样。如果把 IP 地址看成电话号码,那域名系统就是通讯录。我们在通讯录里保存了朋友和家人的信息,每次通过名字找到某人打电话的时候,通讯录就会查出与之关联的电话号码,然后拨号过去。我们可能记不下多少完整的电话号码,但是联系人的名字却是一定记得的。 既然「域名」只是一个别名,单凭这一个名字我们并不能访问到正确的地址,只有能将域名解析成实际的网络地址,网络访问才能成功。这种解析工作由专门的「域名系统」(Domain Name System,简称 DNS)完成,DNS 也是互联网的核心基础服务之一。 域名解析是怎么完成的DNS 解析的过程是什么样子的呢?在开始这个问题之前,我们先看一看域名的层次结构。 域名的层级结构在讨论域名的时候,我们经常听到有人说「顶级域名」、「一级域名」、「二级域名」等概念,域名级别究竟是怎么划分的呢? 根域名。还是以百度为例,通过一些域名解析工具,我们可以看到百度官网域名显示为 www.baidu.com.,细心的人会注意到,这里最后有一个 .,这不是 bug,而是所有域名的尾部都有一个根域名。www.baidu.com 真正的域名是 www.baidu.com.root,简写为www.baidu.com.,又因为根域名 .root 对于所有域名都是一样的,所以平时是省略的,最终就变成了我们常见的样子。根域名的下一级叫做顶级域名(top-level domain,缩写为 TLD),也叫做一级域名,常见的如 .com / .net / .org / .cn 等等,他们就是顶级域名。再下一级叫做二级域名(second-level domain,缩写为 SLD),比如 baidu.com。这是我们能够购买和注册的最高级域名。次级域名之下,就是主机名(host),也可以称为三级域名,比如 www.baidu.com,由此往下,基本上 N 级域名就是在 N-1 级域名前追加一级。总结一下,常见的域名层级结构如下: 主机名.次级域名.顶级域名.根域名# iewww.baidu.com.root一般来说我们购买一个域名就是购买一个二级域名(SLD)的管理权(如 leancloud.cn),有了这个管理权我们就可以随意设置三级、四级域名了。 域名解析的过程与域名的分级结构对应,DNS 系统也是一个树状结构,不同级别的域名由不同的域名服务器来解析,整个过程是一个「层级式」的。 ...

July 12, 2019 · 4 min · jiezi

ReadyNAS上DDclientZoneedit动态域名解析

原博_20171223 话说nas买回来快两年懒癌患者才终于去买了域名,下定决心折腾一下动态域名解析。。。结果,z00.top去年就被人买了-_-||| 其实linux上还有其他程序或者自己写脚本,但是ReadyNAS的app中心既然有DDclient了就懒得再找别的,虽然发现也没那么省心,这是后话。 DDclient主页: https://github.com/ddclient/d... https://sourceforge.net/p/ddc... 支持协议: https://sourceforge.net/p/ddc... 按照攻略说zoneedit支持绑定一个顶级域名,挨个儿试了下好像也就这一个免费的。 先在西部数据购买好了域名,然后回到zoneedit注册完账号,但是界面和攻略差的就有点多了。点击Home下面的Add a Domain,右侧输入框内输入已购买的域名,next之后界面上有一个第一个免费绑定的链接,进去一路next最后confirm。 此时左侧Manage下点击Domains,右侧最下应有登记好的域名了。点击nameservers,得到zoneedit的服务器为 dns1.zoneedit.com,dns2.zoneedit.com,然后将回到西部数据,将原先域名解析服务器替换掉。 之后点击dns设置链接进入设置界面,进入DYN,添加一条记录,ip可先空缺,此时域名应已激活。 此时回到nas上配置DDclient。 配置文件 /etc/ddclient.conf,执行脚本/usr/sbin/ddclient 参考攻略和文档写的conf,结果总是执行有错。。。 回过头重新研究文档:https://sourceforge.net/p/ddc...,再把执行脚本看了一遍,发现例子里面的服务器配置提供错了-_-|||服务器不是www而应该是dynamic.zoneedit.com,这都可以简直了。 把conf文件重新写了一遍,默认的ip获取网址也被墙了,换成3322的,这样也不用过滤字段了 use=web, web=ip.3322.org,protocol=zoneedit1,server=dynamic.zoneedit.com,login=my-zoneedit-login,password=my-zoneedit-passwordmy.domain.name 保存之后执行一遍ddclient,zoneedit后台可以看到ip了,解析成功,接下来写一下cron定时执行,有空再看一下不用密码用token怎么写conf文件。 18.2.4 原来token就是代替密码的啊,我傻了。。。

June 26, 2019 · 1 min · jiezi

DNS域名解析服务及其配置

一、背景到 20 世纪 70 年代末,ARPAnet 是一个拥有几百台主机的很小很友好的网络。仅需要一个名为 HOSTS.TXT 的文件就能容纳所有需要了解的主机信息:它包含了所有连接到 ARPAnet 的主机名字到地址的映射(name-to-addressmapping)。 HOSTS.TXT 文件是由 SRI 的网络信息中心(Network Information Center,简称 NIC)负责维护,并且从一台主机 SRI-NIC 上分发到整个网络。ARPAnet的管理员通常是通过电子邮件通知 NIC,同时定期 FTP 到 SRI-NIC 上获得最新的 HOSTS.TXT 文件。 但是随着 ARPAnet 的增长,这种方法行不通了。每台主机的变更都会导致 HOSTS.TXT 的变化,导致所有主机需要到 SRI-NIC 上获得更新文件。当ARPAnet 采用 TCP/IP 协议后,网络上的主机爆炸性的增长,出现了以下问题: 流量和负载:名字冲突:一致性二、DNS介绍DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。在RFC文档中RFC 2181对DNS有规范说明,RFC 2136对DNS的动态更新进行说明,RFC 2308对DNS查询的反向缓存进行说明。 三、DNS数据结构 3.1 DNS记录类型域名和IP之间的对应关系,称为“记录”(record)。根据使用的目的不同,又分为不同的类型,常见的DNS记录类型如下: A:地址记录(Address),返回域名指向的IP地址。NS:域名服务器记录(Name Server),返回保存下一级域名信息的服务器地址。该记录只能设置为域名,不能设置为IP地址。MX:邮件记录(Mail eXchange),返回接收电子邮件的服务器地址。CNAME:规范名称记录(Canonical Name),返回另一个域名,即当前查询的域名是另一个域名的跳转。PTR:逆向查询记录(Pointer Record),只用于从IP地址查询域名。3.2 工作原理DNS服务的工作过程 当 DNS 客户机需要查询程序中使用的名称时,它会查询本地DNS 服务器来解析该名称。客户机发送的每条查询消息都包括3条信息,以指定服务器应回答的问题。 指定的 DNS 域名,表示为完全合格的域名 (FQDN) 。指定的查询类型,它可根据类型指定资源记录,或作为查询操作的专门类型。DNS域名的指定类别。对于DNS 服务器,它始终应指定为 Internet 类别。例如,指定的名称可以是计算机的完全合格的域名,如im.qq.com,并且指定的查询类型用于通过该名称搜索地址资源记录。 DNS 查询以各种不同的方式进行解析。客户机有时也可通过使用从以前查询获得的缓存信息就地应答查询。DNS 服务器可使用其自身的资源记录信息缓存来应答查询,也可代表请求客户机来查询或联系其他 DNS 服务器,以完全解析该名称,并随后将应答返回至客户机。这个过程称为递归。 ...

May 31, 2019 · 2 min · jiezi

爬虫实现:根据IP地址反查域名

域名解析与IP地址域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务;IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换过程,该过程由DNS服务器完成(来自百度百科)先来了解两个知识点1、一个域名同一时刻只能对应一个IP地址2、一个IP地址可以解析绑定多个域名,没有限制基于以上知识点,假如我们已知一个IP地址,我们怎么才能获取解析到该IP地址的所有域名信息呢?一种方式是国家工信部能开放查询接口以供查询(不知道会不会开放?);另外一种方式就是接下来我要分享的——爬虫实现:根据IP地址反查域名。实现原理实现原理其实很简单,现在已有网站提供了根据IP地址查询域名的功能,但是需要人为登录网站输入IP地址查询,我想要实现程序自动化查询,所以就想到了爬虫的方式,简单来说,就是模拟人的查询行为,将查询结果解析成我想要的域名列表。以site.ip138.com为例,打开F12,输入一个IP查询,观察控制台请求,看到下图中信息请求地址为:http://site.ip138.com/119.75….请求方式为:GET然后,分析Response,可以看到,在页面上看到的绑定域名信息就是下图红框中<span>的内容,所以只要能将Response的内容解析出来,获取到<span>的内容就可以得到想要的域名列表。上述Response是HTML页面,使用jsoup来解析HTML简直完美。jsoup是什么?jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。//解析成Document对象Document document = Jsoup.parse(result);if (document == null) { logger.error(“Jsoup parse get document null!”);}//根据ID属性“list”获取元素Element对象(有没有感觉很像jQuery?)Element listEle = document.getElementById(“list”);//根据class属性和属性值筛选元素Element集合,并通过eachText()遍历元素内容return listEle.getElementsByAttributeValue(“target”, “blank”).eachText();result的内容通过HttpClient模拟HTTP请求HttpGet httpGet = new HttpGet(url);httpGet.setHeader(“Accept”, “text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8”);httpGet.setHeader(“Accept-Encoding”, “gzip, deflate”);httpGet.setHeader(“Accept-Language”, “zh-CN,zh;q=0.9”);httpGet.setHeader(“Cache-Control”, “max-age=0”);httpGet.setHeader(“Connection”, “keep-alive”);httpGet.setHeader(“Cookie”, “Hm_lvt_d39191a0b09bb1eb023933edaa468cd5=1553090128; BAIDU_SSP_lcr=https://www.baidu.com/link?url=FS0ccst469D77DpdXpcGyJhf7OSTLTyk6VcMEHxT_9&wd=&eqid=fa0e26f70002e7dd000000065c924649; pgv_pvi=6200530944; pgv_si=s4712839168; Hm_lpvt_d39191a0b09bb1eb023933edaa468cd5=1553093270”);httpGet.setHeader(“DNT”, “1”);httpGet.setHeader(“Host”, host);httpGet.setHeader(“Upgrade-Insecure-Requests”, “1”);httpGet.setHeader(“User-Agent”, “Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36”);String result = HttpUtils.doGet(httpGet);HTTP请求工具类public class HttpUtils { private static Logger logger = LoggerFactory.getLogger(HttpUtils.class); public static String doGet(HttpGet httpGet) { CloseableHttpClient httpClient = null; try { httpClient = HttpClients.createDefault(); RequestConfig requestConfig = RequestConfig.custom() .setConnectTimeout(5000).setConnectionRequestTimeout(10000) .setSocketTimeout(5000).build(); httpGet.setConfig(requestConfig); HttpResponse httpResponse = httpClient.execute(httpGet); if (httpResponse.getStatusLine().getStatusCode() == 200 || httpResponse.getStatusLine().getStatusCode() == 302) { HttpEntity entity = httpResponse.getEntity(); return EntityUtils.toString(entity, “utf-8”); } else { logger.error(“Request StatusCode={}”, httpResponse.getStatusLine().getStatusCode()); } } catch (Exception e) { logger.error(“Request Exception={}:”, e); } finally { if (httpClient != null) { try { httpClient.close(); } catch (IOException e) { logger.error(“关闭httpClient失败”, e); } } } return null; }}新增Controller@RestControllerpublic class DomainSpiderController { private static Logger logger = LoggerFactory.getLogger(DomainSpiderController.class); @Autowired private DomainSpiderService domainSpiderService; /** * @param ip 119.75.217.109 * @return */ @RequestMapping("/spider/{ip}") @ResponseBody public List<String> domainSpider(@PathVariable(“ip”) String ip) { long startTime = System.currentTimeMillis(); List<String> domains = domainSpiderService.domainSpiderOfIp138(ip); if(domains == null || domains.size() == 0) { domains = domainSpiderService.domainSpiderOfAizan(ip); } long endTime = System.currentTimeMillis(); logger.info(“完成爬虫任务总耗时:{}s”, (endTime - startTime) / 1000); return domains; }}启动Spring Boot应用,访问浏览器:http://localhost:8080/spider/119.75.217.109获得返回结果如下:怎么样?是不是很简单?优化改进:有时候仅仅通过一个网站查询的域名数据可能不太准确,甚至查询不到数据,我们也没法判断谁才是正确的,所以,可以通过爬取多个网站的结果结合起来使用,例如:dns.aizhan.com提出疑问:这些提供根据IP反查域名的网站,是怎么实现的呢?我咨询过其他人,他们的回答是这些网站收集了很多IP和域名的对应关系,真实情况是这样的吗?示例源码domain-spider代码已上传至码云和Github上,欢迎下载学习GiteeGithub ...

April 13, 2019 · 1 min · jiezi

在nginx中设置三级域名

问题描述通过配置nginx可以设置一个IP地址下面通过不同的端口访问不同的Web应用,但是时间长了之后端口号和应用之间的关系就很模糊了。 如 http://120.79.79.XX:9001 和foreign.XXX.xin 虽然这两个网址都是指向同一个网站,但是后者显然望文生义,比前者好很多。同时在网站SEO中,后者也比前者的权重更高。基本知识顶级域名:.com .cn二级域名:baidu.com sina.com ,这其中baidu 和sina就是二级域名三级域名:zhidao.baidu.com 其中zhidao就是三级域名基本步骤 设置地址解析 配置nginx 监听 配置nginx 跳转创建地址解析笔者使用的阿里云,登录到阿里云后台后,新增A记录,将三级域名名称填入到主机记录中,具体填写方法可以参考下图配置nginx修改 /etc/nginx/sites-aviablable中的default 文件,完整代码如下:server { listen 80 default_server; listen [::]:80 default_server; root /var/www/html/wordpress; index index.php index.html index.htm index.nginx-debian.html; server_name www.xXXX.xin; location / { try_files $uri $uri/ =404; } location ~ .php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; } location ~ /.ht { deny all; }}#服务2server { listen 80; server_name foreign.XXX.xin; location / { proxy_pass http://120.79.XX.XX:9000/; }}两个服务都是监听的同一个端口80,但是服务2 的server_name 和新设置的地址解析保持一致。然后设定proxy_pass 将80端口获取到的信息转发到9000端口。 ...

December 17, 2018 · 1 min · jiezi

用POLARDB构建客到智能餐饮系统实践

在新零售成为大趋势的今天,餐饮行业也加入到这一浪潮之中。智能餐饮系统将帮助餐饮行业从多个维度提升自己的运营能力和收益,而打造智能餐饮系统SaaS化能力也成为了目前的一个热点。本文中果仁软件联合创始人&研发副总赵亚南就为大家带来了关于使用阿里云POLARDB构建客到智能餐饮系统实践分享。本次分享中,首先介绍了“客到云餐饮”这款SaaS化产品,其次介绍随着业务发展所需要面对的挑战,以及“客到”为什么要选择POLARDB。第三将讲述使用POLARDB的解决方案以及迁移的整个过程所做的实践,最后将分享将数据库架构升级到POLARDB之后的效果。果仁软件与“客到云餐饮”背景介绍果仁软件早在2008年就是淘宝服务平台的第一批软件开发商,当时做了“麦多多”产品,也正是因为这款产品,果仁软件成为了阿里云的第一批客户。在使用阿里云的过程中也逐渐更多地了解了这些云产品,目前整体的技术架构都是基于阿里云的。使用阿里云产品为果仁软件带来的好处就是节省了大量运维成本,能够使技术团队更加专注于自身产品和业务的开发上。四年前,基于使用阿里云的经验和对于软件的理解,果仁软件参与到了餐饮行业的SaaS化软件“客到云餐饮”开发中。客到主要实现了SaaS化餐饮解决方案,包括了点餐、收银、财务以及后厨管理和营销、员工绩效考核等。“客到”通过智能化、数字化的餐饮服务软件,可以帮助餐厅更好地提升经营效率和服务质量,让客户真正地享受到餐饮行业所带来的服务。智能化点餐以及收银能够帮助餐厅很好地降低了人力成本和时间成本,智能化餐饮系统能够让餐厅的工作人员直接在报表中看到所有的流水信息,使得对账工作更加轻松简单。餐厅的厨师本身就非常忙碌,那么借助智能化后厨管理就能帮助厨师有序地制作菜品,进而提升后厨效率。会员营销是SaaS化中常用的功能,但是对于餐饮行业,传统会员营销方式并不能有效地吸引顾客,而借助智能系统,餐厅可以开展店内店外的智能营销,使得活动更加高效,为餐厅带来更多的资金流。很多餐饮企业越来越注意实时化的信息,对于报表的实时性要求更高。因此,餐饮行业的SaaS化就可以从这样的切入点开展。此外,“客到”在用户体验上也做了精细化设置,比较简洁、实用。而通过软件与智能硬件的配合,就能够更好地赋能餐饮行业。“客到”借助阿里云的SaaS化发展之路餐饮行业的特点就是业务峰值比较高,特别是午餐和晚餐时段这一点就体现的更为明显。通过阿里云后台的云监控可以看到在这两个时间段,几乎在瞬间系统压力就会大幅度提升,这就需要系统能够很好地应对峰值情况。此外,周末的晚上会比平时出现更大的峰值,能够达到平时的2到3倍。而且餐厅的订单数据量也是非常大的,正常的一家中餐厅每餐大概会销售200到250单,一些快餐厅甚至会达到1000到2000单。这样如果服务1万家餐厅,订单量就能达到每天100万,每年订单量就会达到7、8亿。结合菜单的明细数据,这样的数据量是非常大的。而且由于涉及到订单、会员以及促销等信息,因此表结构也会比较大,而且在高峰的时候这些业务都会出现高并发。此外,由于餐厅的特点,因此对于系统的稳定性要求非常高,基本上可以说是“365*24”小时的可用性要求。因为很多餐厅不仅提供中餐和晚餐,还会提供夜宵和早餐。之前用户量小时,就可以等待用户没有的时候进行发布新版本,而当用户量增大之后发现,这样的空闲时段已经不存在了。在最初设计餐饮软件的时候,认为只要餐厅有网络就完全可以实现SaaS化。但是后来发现在业务高峰的时候,即使带宽足够,但是在访问云端数据的时候还是非常差,甚至中断而影响业务。基于这样的情况,客到实现了本地的架构调整,能够实现即使断网也不影响业务流程的继续运行,用户对于网络情况可以实现无感知,这一点在友商内能够做到的也并不多,因此也收获了较好的口碑。随着业务发展量越来越大,用户量也越来越多,需求不断增加,业务的逻辑也越来越复杂。随着多种点餐方式以及多种下单场景的增加,对于业务调整的及时性要求越来越高。此外,产品线也越来越丰富,从3个产品飞速扩展得到8个产品。而随着业务量的增长,历史数据也飞速增长,有时候会因为云端的“慢SQL”出现卡顿,暴露出一些隐藏的问题。通过阿里云监控,及时地感知到高峰时期的CPU、内存等的报警信息,进而增加服务器或者服务器组的处理。针对于上述出现的问题,经常会做一些相应的分析。从页面的加载、前端再到后台数据库都会进行排查。在系统优化方面,会每天排查出慢SQL进行优化,包括RDS也会存在慢查询的统计,虽然慢查询并不会影响业务的正常运转,但是总会带来一些不好的用户体验。针对于以上的情况,需要增加一些索引机制以及缓存层等,对于一些历史数据进行归档,对于一些业务进行拆分,减少单表的压力,同时使得业务架构更加清晰。虽然以上的技术问题并不会影响业务的正常运转,但是有限的研发精力总是被这些技术问题所牵绊,就会影响技术团队开发新的需求和功能的速度和效率。特别是对于创业公司而言,研发效率和用户需求是最为注重的关键点。因此更加希望将技术精力集中在产品业务的开发中,做好产品,服务好客户。如果能够通过更好的技术方式和产品减少非主线研发的工作量也是各个公司以及架构师所需要考虑的。也就是说除了需要解决当前问题,还需要能够支撑起两年之内的业务扩展,虽然中间也会经历架构演变,但是对于架构师而言,需要做到心里有底。此外,好的产品一定能够提供好的性能,同时在费用上需要做到可控和可预算。为大家简单分享一下“客到”基于阿里云的架构设计。首先,从用户开始访问开始,阿里云提供了域名解析服务和CDN加速以及网络安全方面的Web应用防火墙。经过域名解析之后就到了前端的服务器,而通过负载均衡器将会将前置服务器和后置服务器再次分离,进而解决应用层面的并发请求量。应用服务器为了解决Session共享问题可以应用Redis解决,实现单机出现宕机不影响用户使用,从而实现高可用。同时Redis缓存可以有效缓解数据库层面的压力,但是在使用的时候也需要注意其自身的特点,比如带宽限制以及逻辑上需要和存储层保持一致。存储层之前使用RDS,现在换用了POLARDB,之前通过一台主RDS和几个RDS只读节点就基本上解决了关系型存储,可以对于订单的历史数据完成异步的备份。对于文件和图片等的存储可以放在阿里云OSS之上,这样比放在磁盘上更加节省成本。在安全方面,使用最多的就是云监控产品,这样就可以实现问题的提前监控预警。在设计架构的时候,架构师需要不断地梳理架构,这样在进行架构演进的时候就可以容易地分析和判断架构是否可以迁移。“客到”数据库架构向POLARDB迁移实践在进行架构迁移的可行性分析的时候,首先要把现在架构的情况,涉及到的业务以及运行的主机、ECS以及OSS都需要进行风险评估。所以在实际进行系统迁移的时候需要首先进行评估。之后为了打消研发和产品对于采用新技术和产品的顾虑,就需要做充分的准备和测试,比如对于应用POLARDB而言,需要对于性能进行充分测试,比如100%兼容MySQL,还需要对于业务进行全流程测试,在测试完成之后需要第一时间进行测试反馈。在迁移之后需要进行效果评估,“客到”在迁移到POLARDB之后发现页面响应速度得到了80%的提升,复杂SQL处理性能得到了200%的提升,而费用则降低了20%。而且整个迁移过程只使用了1个多小时,生产环境目前平稳运行,并且业务代码没有做任何修改,只做了配置文件的简单替换。最后为大家分享在数据库架构迁移过程中需要注意的两个关键点,第一点就是VPC的迁移,POLARDB使用的是VPC网络连接,那么在迁移的时候就需要做好网络规划,需要把握好时间点。此外,需要注意白名单的变化,因为在整个网络架构发生变化的时候,外网IP的变动有可能影响到第三方接口调用。本文作者:桐碧2018阅读原文本文为云栖社区原创内容,未经允许不得转载。

November 16, 2018 · 1 min · jiezi