• 关于

    软件可测试性常见故障

    的搜索结果

问题

性能测试:软件测试的重中之重

云效平台 2019-12-01 21:45:09 5839 浏览量 回答数 1

问题

Web测试方法

技术小菜鸟 2019-12-01 21:41:32 7022 浏览量 回答数 1

回答

概述 本文主要介绍无法远程登录Linux实例的案例和排查方法。 详细信息 本文主要通过如下2个方面解决无法远程登录Linux实例的问题。 常见报错案例 排查方法 常见报错案例 SSH无法远程登录Linux实例的常见案例如下所示,可根据实际报错信息选择不同的方案进行排查和处理。 PAM安全框架 Linux系统环境配置 SSH服务及参数配置 SSH服务关联目录或文件配置 SSH服务密钥配置 PAM安全框架 Linux系统的PAM安全框架可以加载相关安全模块,对云服务器的账户策略、登录策略等进行访问控制。如果相关配置存在异常,或触发了相关策略,就可能会导致SSH登录失败。根据不同报错信息,可参见如下常见案例进行解决。 SSH登录时出现如下错误:pam_listfile(sshd:auth): Refused user root for service sshd SSH登录时出现如下错误:requirement “uid >= 1000” not met by user “root” SSH登录时出现如下错误:Maximum amount of failed attempts was reached SSH登录时出现如下错误:login: Module is unknown Linux系统环境配置 Linux内的系统环境,比如中毒、账户配置、环境变量配置等,如果出现异常,也可能会导致SSH登录失败。根据不同报错信息,可参见如下常见案例进行解决。 SSH登录时出现如下错误:ssh_exchange_identification: read: Connection reset by peer 中毒导致SSH服务运行异常,出现如下错误:fatal: mm_request_send: write: Broken pipe SSH启动时出现如下错误:main process exited, code=exited SSH连接时出现如下错误:pam_limits(sshd:session):could not sent limit for ‘nofile’ SSH连接时出现如下错误:pam_unix(sshdsession) session closed for user SSH连接时出现如下错误:error Could not get shadow infromation for root SSH服务及参数配置 SSH服务的默认配置文件为/etc/ssh/sshd_config。配置文件中的相关参数配置异常,或启用了相关特性或策略,也可能会导致 SSH登录失败。根据不同报错信息,可参见如下常见案例进行解决。 SSH登录时出现如下错误:Disconnected:No supported authentication methods available SSH登录时出现如下错误:User root not allowed because not listed in SSH登录时出现如下错误:Permission denied, please try again SSH登录时出现如下错误:Too many authentication failures for root SSH启动时出现如下错误:error while loading shared libraries SSH启动时出现如下错误:fatal: Cannot bind any address SSH启动时出现如下错误:Bad configuration options 云服务器ECS Linux SSH启用UseDNS导致连接速度变慢 Linux实例中由于SELinux服务开启导致SSH远程连接异常 SSH服务关联目录或文件配置 SSH服务基于安全性考虑,在运行时,会对相关目录或文件的权限配置、属组等进行检查。过高或过低的权限配置,都可能会引发服务运行异常,进而导致客户端登录失败。根据不同报错信息,可参见如下常见案例进行解决。 SSH登录时出现如下错误:No supported key exchange algorithms SSH启动时出现如下错误:must be owned by root and not group or word-writable SSH服务密钥配置 SSH服务采用非对称加密技术,对所传输的数据进行加密。客户端及服务端会交换和校验相关密钥信息的有效性。根据不同报错信息,可参见如下常见案例进行解决。 SSH登录时出现如下错误:Host key verification failed SSH服务的公私钥异常导致无法SSH登录Linux实例 排查方法 若常见报错案例没有解决问题,可以参考如下流程排查问题。 检查CPU负载、带宽及内存使用情况 客户端排查 中间网络 网络检查 端口检查 安全组检查 示例 提示: 以下操作在CentOS 6.5 64位操作系统中进行过测试,在其他Linux发行版中可能存在差异,具体情况请参阅对应Linux发行版的官方文档。 客户端SSH连接Linux实例是运维操作的主要途径。通过管理终端可以用于临时运维操作,或者在客户端SSH登录异常时,用于问题排查和分析。 下图为SSH登录关联因素示意图。由此可见,通过SSH无法远程登录Linux实例时,可能涉及的关联因素较多。 检查CPU负载、带宽及内存使用情况 确认是否存在CPU负载过高的情况,如果存在,则参考本步骤解决问题,如果不存在,则执行下一步步骤。 提示:您无法主动监控系统内部的程序运行状态,但是可以借助云监控进行查看。 登录云监控控制台,依次选择 主机监控 > 进程监控。 查看应用运行情况,排除CPU负载过高的原因,如何查看CPU负载问题,请参见Linux系统ECS实例CPU使用率较高的排查思路。 提示:在某个时间段CPU负载过高可能导致远程连接失败,建议您查询程序或者实例资源是否不满足现有要求。 无法远程连接可能是公网带宽不足导致的,具体排查方法如下。可通过续费ECS实例,然后重启实例解决。详情参见手动续费或者自动续费。 登录ECS管理控制台。 找到该实例, 单击 管理 进入 实例详情 页面,查看网络监控数据。 检查服务器带宽是否为“1k”或“0k”。如果购买实例时没有购买公网带宽,后来升级了公网带宽,续费的时候没有选择续费带宽,带宽就会变成“1k”。 远程连接输入用户密码登录后,不能正常显示桌面直接退出,也没有错误信息。这种情况可能是服务器内存不足导致的,需要查看一下服务器的内存使用情况。具体操作如下。 使用控制台远程连接功能登录到Linux实例。 查看内存使用情况,具体请参考Linux系统的ECS实例中如何查看物理CPU和内存信息,确认内存不足后,请参考Linux服务器内存消耗过高进行处理。 客户端排查 客户端无法正常登录时,先使用不同的SSH客户端基于相同账户信息进行登录测试。如果能正常登录,则判断是客户端配置问题,需要对客户端配置或软件运行情况做排查分析。关于如何使用客户端SSH登录Linux实例,您可以参考远程连接Linux实例。 步骤一:使用管理终端登录实例 无论何种原因导致无法远程连接实例,请先尝试用阿里云提供的远程连接功能进行连接,确认实例还有响应,没有完全宕机,然后再按原因分类进行故障排查。 登录云服务器管理控制台,单击左侧导航栏中的 实例,然后在目标实例右侧单击 远程连接。 在首次连接或忘记连接密码时,单击 修改远程连接密码,修改远程连接的密码。 然后通过远程连接密码连接实例。 步骤二:检查客户端本地网络是否异常 确认是否存在用户本地无法连接外网的故障。 如果存在,则检查网卡驱动,如果存在异常,则重新安装。使用管理终端登录实例,查看/etc/hosts.deny文件,查看是否存在拦截IP,如果存在则删除此IP配置即可。 如果不存在,则执行下一步步骤。 步骤三:重启实例 在确保登录密码正确的情况下,确认之前是否曾重置过密码。检查重置实例密码后是否未重启实例,如果存在实例密码修改记录,但无重启实例记录,则参考以下操作步骤重启实例。 登录ECS管理控制台,单击左侧导航栏中的 实例。 在页面顶部的选择对应的地域,目标实例右侧单击 更多 > 实例状态 > 重启,再单击 确认 即可。 中间网络 中间网络包括网络检查和端口检查。 网络检查 无法正常远程连接Windows实例时,需要先检查网络是否正常。 用其他网络环境中,不同网段或不同运营商)的电脑连接对比测试,判断是本地网络问题还是服务器端的问题。如果是本地网络问题或运营商问题,请联系本地IT人员或运营商解决。如果是网卡驱动存在异常,则重新安装。排除本地网络故障后进行下一步检查。 在客户端使用ping命令测试与实例的网络连通性。 网络异常时,请参考网络异常时如何抓取数据包进行排查。 当出现ping丢包或ping不通时,请参考使用ping命令丢包或不通时的链路测试方法进行排查。 如果出现间歇性丢包,ECS实例的网络一直处于不稳定状态时,请参考使用ping命令测试ECS实例的IP地址间歇性丢包进行解决。 系统内核没有禁ping的情况下,使用ping命令测试ECS服务器,发现网络不通,请参考Linux系统的ECS中没有禁PING却PING不通的解决方法。 端口检查 网络检查正常后,进一步检查端口是否正常。 使用管理终端登录实例,执行如下命令,编辑SSH配置文件。 vi /etc/ssh/sshd_config 找到“#port 22”所在行,检查默认端口22是否被修改,且前面的“#”是否删除,如果没有删除,可以把前面的“#”删除,然后将22改为其它的端口,再保存退出即可。 注:服务监听能使用的端口范围为0到65535,错误配置监听端口会导致远程桌面服务监听失败。 执行如下命令,重启SSH服务。 /etc/init.d/sshd restart 注:也可执行如下命令,重启SSH服务。 service sshd restart 使用Python自带的Web服务器用于临时创建新的监听端口进行测试。 python -m SimpleHTTPServer [$Port] 如果登录方式改变或者ECS安全组规则中未放行修改后的端口号,则参考如下步骤放行修改后的端口。 注:ECS的安全组规则中默认放行22端口。修改了远程桌面的端口后,需要在安全组规则中放行修改后的端口号。 登录ECS管理控制台。 找到该实例,单击 管理 进入 实例详情 页面,切换到 本实例安全组 标签页,单击 配置规则。 在安全组规则页面,单击 添加安全组规则。 在弹出的页面中,端口范围 输入修改后的远程桌面端口号。授权对象 输入客户端的公网IP地址。比如修改后的远程桌面端口号为2222,则 端口范围 应输入“2222/2222”。填写完成后,单击 确定。 通过上一步获取的端口,参考如下命令,进行端口测试,判断端口是否正常。如果端口测试失败,请参考使用ping命令正常但端口不通时的端口可用性探测说明进行排查。 telnet [$IP] [$Port] 注: [$IP]指Linux实例的IP地址。 [$Port]指Linux实例的SSH端口号。 系统显示类似如下,比如执行telnet 192.168.0.1 22命令,正常情况下,系统会返回服务端中SSH的软件版本号。 安全组检查 检查安全组配置,是否允许远程连接的端口。 参考查询安全组规则,查看安全组规则。如果远程连接端口没有进行配置,则参考Linux实例启用SSH服务后设置对应的安全组策略配置。 确认是否存在无法ping通ECS实例,在排除Iptables和网卡IP配置问题且回滚系统后,仍然无法ping通。可能是ECS实例安全组默认的公网规则被删除,则需要重新配置ECS实例的安全组公网规则,具体操作请参见ECS实例安全组默认的公网规则被删除导致无法ping通。如果不存在,则继续下一步骤检查。 示例 如果根据前述问题场景进行排查和处理后,还是无法正常登录。则建议按照如下步骤逐一排查和分析。 使用不同的客户端SSH及管理终端做对比访问测试,判断是否是个别客户端自身配置或软件运行问题所致。 参阅中间网络问题相关说明,测试网络连通性。 参阅管理终端,登录云服务器,在客户端进行访问测试的同时,执行如下命令,查看相关日志。 tailf /var/log/secure 参考如下命令, 比如ssh -v 192.168.0.1 命令,获取Linux环境中详细的SSH登录交互日志。 ssh -v [$IP] 通过管理终端登录Linux实例,参考如下步骤,检查SSH服务运行状态。 执行如下命令,检查服务运行状态。 service sshd status service sshd restart 正常情况下会返回SSH服务的运行状态及进程PID,系统显示类似如下。 [root@centos ~]# service sshd status openssh-daemon (pid 31350) is running... [root@centos ~]# service sshd restart Stopping sshd: [ OK ] Starting sshd: [ OK ] 执行如下命令,检查服务监听状态。 netstat -ano | grep 0.0.0.0:22 正常情况下会返回相应端口监听信息,系统显示类似如下。 tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN off (0.00/0/0) 通过管理终端登录Linux实例,执行如下命令。如果能正常登录,则推断是系统防火墙或外部安全组策略等配置异常,导致客户端登录失败。 ssh 127.0.0.1 若用阿里云提供的远程连接功能仍无法成功连接实例,请尝试重启实例。重启操作会使实例停止工作,从而中断业务,请谨慎执行。 提示:重启实例前,需给实例创建快照,用于数据备份或者制作镜像。创建快照的方法请参见创建快照。 登录ECS管理控制台,单击左侧导航栏中的 实例。 在页面顶部的选择对应的地域,在目标实例右侧单击 更多 > 实例状态 > 重启,再单击 确认 即可。

1934890530796658 2020-03-26 09:52:57 0 浏览量 回答数 0

阿里云试用中心,为您提供0门槛上云实践机会!

0元试用32+款产品,最高免费12个月!拨打95187-1,咨询专业上云建议!

问题

软件开发中常见的十大系统瓶颈

小柒2012 2019-12-01 20:59:48 9755 浏览量 回答数 2

问题

企业运营对DevOps的「傲慢与偏见」

忆远0711 2019-12-01 21:32:29 9823 浏览量 回答数 0

回答

概述 本文主要介绍无法远程连接Windows实例的排查方法。 详细信息 阿里云提醒您: 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。 无法远程连接Windows实例的原因较多,可通过以下排查方法,排查并解决无法远程连接Windows实例的问题。 步骤一:使用管理终端登录实例 步骤二:登录密码检查 步骤三:端口及安全组检查 步骤四:远程桌面服务检查 步骤五:网络检查 步骤六:检查CPU负载、带宽及内存使用情况 步骤七:防火墙配置检查 步骤八:系统的安全策略设置 步骤九:远程终端服务的配置检查 步骤十:杀毒软件检查 步骤十一:尝试重启实例 常见报错案例 步骤一:使用管理终端登录实例 无论何种原因导致无法远程连接实例,请先尝试用阿里云提供的远程连接功能进行连接,确认实例还有响应,没有完全宕机,然后再按原因分类进行故障排查。 登录ECS管理控制台,单击左侧导航栏中的 实例,在目标实例右侧单击 远程连接。 在首次连接或忘记连接密码时,单击 修改远程连接密码,修改远程连接的密码。 然后通过远程连接密码连接实例。 步骤二:登录密码检查 在确保登录密码正确的情况下,确认之前是否曾重置过密码。检查重置实例密码后是否未重启实例,如果存在实例密码修改记录,但无重启实例记录,则参考以下操作步骤重启实例。 登录ECS管理控制台,单击左侧导航栏中的 实例。 在页面顶部的选择对应的地域,目标实例右侧单击 更多 > 实例状态 > 重启,再单击 确认 即可。 步骤三:端口及安全组检查 进一步检查端口是否正常,以及安全组规则是否有限制。 参考如何查看和修改Windows实例远程桌面的默认端口,检查实例远程链接的端口是否被修改。如果登录方式改变或者ECS安全组规则中未放行修改后的端口号,则参考如下步骤放行修改后的端口。 注:ECS的安全组规则中默认放行3389端口。修改了远程桌面的端口后,需要在安全组规则中放行修改后的端口号。 登录ECS 管理控制台。 找到该实例,单击 管理 进入 实例详情 页面,切换到 本实例安全组 标签页,单击 配置规则。 在安全组规则页面,单击 添加安全组规则。 在弹出的页面中,端口范围 输入修改后的远程桌面端口号。授权对象 输入客户端的公网IP地址。比如修改后的远程桌面端口号为4389,则 端口范围 应输入“4389/4389”。填写完成后,单击 确定。 通过“IP:端口”的方式进行远程桌面连接。连接方式类似如下。 通过上一步获取的端口,参考如下命令,进行端口测试,判断端口是否正常。如果端口测试失败,请参考使用ping命令正常但端口不通时的端口可用性探测说明进行排查。 telnet [$IP] [$Port] 注: [$IP]指Windows实例的IP地址。 [$Port]指Windows实例的RDP端口号。 系统显示类似如下,比如执行telnet 192.168.0.1 4389命令,正常情况下返回结果类似如下。 Trying 192.168.0.1 ... Connected to 192.168.0.1 4389. Escape character is '^]' 检查Windows远程端口设置是否超出范围,如果超出范围,您需将端口重新修改为0到65535之间,且没有被占用的其它端口,具体操作请参考如下操作。 登录实例,依次选择 开始 > 运行,输入 regedit,然后单击 确认。 打开注册表编辑器,依次选择 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp。 双击 PortNumber,单击 十进制,将原端口由“113322”修改为0到65535之间且不与当前端口冲突的端口,例如5588等端口。 注:“113322”为PortNumber右侧显示的端口号。 再打开 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Tenninal Server\WinStations\RDP-Tcp。 双击 PortNumber,单击 十进制,将原端口“113322”修改为与第3步一致的端口号。 然后重启主机,确认远程连接成功。 步骤四:远程桌面服务检查 您可以查看Windows服务器的系统是否开启了远程桌面服务。具体操作如下。 使用控制台远程连接功能登录到Windows实例。 右键单击 我的电脑,选择 属性 > 高级系统设置。 在 系统属性 窗口,选择 远程 选项卡,然后勾选 允许运行任意版本远程桌面的计算机连接 即可。 用户为了提高系统安全性,有时错误的将远程桌面服务所依赖的某些关键服务禁用,导致远程桌面服务异常。可通过以下操作进行检查。 使用控制台远程连接功能登录到Windows实例。 选择 开始 > 运行。 输入msconfig,单击 确定。 在弹出的窗口中,选择 常规 选项卡,选择 正常启动,然后重启服务器即可。 步骤五:网络检查 无法正常远程连接Windows实例时,需要先检查网络是否正常。 用其他网络环境中(不同网段或不同运营商)的电脑连接对比测试,判断是本地网络问题还是服务器端的问题。如果是本地网络问题或运营商问题,请联系本地IT人员或运营商解决。如果是网卡驱动存在异常,则重新安装。排除本地网络故障后进行下一步检查。 在客户端使用ping命令测试与实例的网络连通性。 网络异常时,请参考网络异常时如何抓取数据包进行排查。 当出现ping丢包或ping不通时,请参考使用ping命令丢包或不通时的链路测试方法进行排查。 如果出现间歇性丢包,ECS实例的网络一直处于不稳定状态时,请参考使用ping命令测试ECS实例的IP地址间歇性丢包进行解决。 在实例中使用ping命令测试与客户端的连通性,提示“一般故障”的错误,请参考Windows实例ping外网地址提示“一般故障”进行解决。 步骤六:检查CPU负载、带宽及内存使用情况 确认是否存在CPU负载过高的情况,如果存在,则参考本步骤解决问题,如果不存在,则执行下一步步骤。 检查CPU负载过高时,通过实例详情页面的终端登录实例,检查后台是否正在执行Windows Update操作。 运行Windows Update来安装最新的微软安全补丁。 若应用程序有大量的磁盘访问、网络访问行为、高计算需求,CPU负载过高是正常结果。您可以尝试升配实例规格来解决资源瓶颈问题。 CPU负载过高的解决方法请参见Windows系统ECS实例的CPU使用率较高的解决方法。 无法远程连接可能是公网带宽不足导致的,具体排查方法如下。可通过续费ECS实例,然后重启实例解决。详情参见手动续费或者自动续费。 登录ECS管理控制台。 找到该实例, 单击 管理 进入 实例详情 页面,查看网络监控数据。 检查服务器带宽是否为“1k”或“0k”。如果购买实例时没有购买公网带宽,后来升级了公网带宽,续费的时候没有选择续费带宽,带宽就会变成“1k”。 远程连接输入用户密码登录后,不能正常显示桌面直接退出,也没有错误信息。这种情况可能是服务器内存不足导致的,需要查看一下服务器的内存使用情况。具体操作如下。 使用控制台远程连接功能登录到Windows实例。 选择 开始 > 控制面板 > 管理工具,双击 事件查看器。查看一下是否有内存资源不足的警告日志信息。如有日志信息提示内存不足,具体解决方法参考Windows 虚拟内存不足问题的处理。 步骤七:防火墙配置检查 您只有在已授权可关闭防火墙的情况下,才能进行该项排查。确认防火墙是否已关闭,如果没有关闭,则通过调整防火墙配置策略修复,具体操作请参见如何配置Windows实例远程连接的防火墙。完成操作后,请再进行远程连接,确认连接成功。本文以Windows Server 2012初次登录开启防火墙为例。新购的Windows 2012实例,首次连接服务器是可以的。连接服务器并激活系统后,会提示如下图片中的信息,用户需要单击 是,如果单击 否,服务器会自动开启公网的防火墙,连接会直接断开。此问题可参考以下步骤进行解决。 使用控制台远程连接功能登录到Windows实例。 在菜单栏选择 开始 > 控制面板 。 查看方式 选择 小图标,单击 Windows 防火墙。 在 Windows 防火墙 窗口,单击 高级设置。 在弹出的窗口中,单击 入站规则,在右侧拉至最下方,右键单击 远程桌面-用户模式(TCP-In),选择 启动规则。 返回上一个页面, 单击 Windows 防火墙属性。 选择 启用(推荐),单击 应用。 注意:建议将 域配置文件、专用配置文件、公用配置文件 选项卡下的防火墙全部启用。 更多关于防火墙的设置,请参考设置Windows实例远程连接防火墙。 步骤八:系统的安全策略设置 您可以查看Windows服务器上是否有阻止远程桌面连接的相关安全策略。具体操作如下。 使用控制台远程连接功能登录到Windows实例。 选择 开始 > 控制面板 > 管理工具,双击 本地安全策略。 在弹出的窗口中,单击 IP 安全策略,查看是否有相关的安全策略。 如果有,右键单击相关策略,选择 删除,或双击该IP的安全策略来重新配置以允许远程桌面连接。然后再使用远程桌面连接。 步骤九:远程终端服务的配置检查 无法连接Windows实例远程桌面可能是由于以下远程终端服务的配置异常而导致。 异常一:服务器侧自签名证书损坏 客户端如果是Windows 7以上版本的系统,会尝试与服务器建立TLS连接。若服务器侧用于TLS连接的自签名证书损坏,则会导致远程连接失败。 使用控制台远程连接功能登录到Windows实例。 选择 开始 > 管理工具 > 远程桌面服务,然后双击 远程桌面会话主机配置。 选择 RDP-Tcp。在RDP-Tcp属性窗口,将 安全层 修改成 RDP安全层。 在操作栏单击 禁用连接,再单击 启用连接 即可。 异常二:远程桌面会话主机配置连接被禁用 使用netstat命令查询,发现端口未正常监听。使用控制台远程连接功能登录到Windows实例后,发现远程桌面RDP连接属性配置文件被禁用。参考服务器侧自签名证书损坏找到RDP连接属性配置文件,如果 RDP-Tcp 被禁用,单击 启用连接 即可。 异常三:终端服务器角色配置 用户在使用远程桌面访问Windows实例时,有时会出现如下提示。这种情况一般是由于在服务器上安装配置了 终端服务器,但是没有配置有效的访问授权导致的。可参见如下两个解决方案处理。 Windows服务器远程桌面提示“没有远程桌面授权服务器可以提供许可证”错误 远程登录Windows实例报“远程桌面用户组没有该权限”错误 步骤十:杀毒软件检查 无法连接远程桌面可能是由于第三方杀毒软件设置导致,可通过以下方法进行解决。此处列举两个安全狗配置导致远程访问失败的解决案例。 如果杀毒软件在后台执行,可通过实例详情页面的终端登录,将杀毒软件升级至最新版本或者直接删除。 请使用商业版杀毒软件,或者使用Microsoft Safety Scanner微软免费安全工具,在安全模式下扫描杀毒,相关信息请访问如下链接。 https://www.microsoft.com/security/scanner/zh-cn/default.aspx 案例一:安全狗黑名单拦截 如果安装了安全狗后,出现如下情况,请确认防护软件中是否做了安全设置或对应的拦截。 客户端本地无法远程桌面连接Windows实例,但其他区域可以远程连接。 无法ping通服务器IP地址,且通过tracert命令跟踪路由,发现无法到达服务器。 云盾未拦截本地公网IP地址。 可打开 服务器安全狗 进行检查,选择 网络防火墙。单击 超级黑名单 的 规则设置,如果黑名单中存在实例公网IP,则将此黑名单规则删除,然后将公网IP添加到 超级白名单。 说明:如果云盾的阈值设置过低,则可能拦截实例公网IP。建议把清洗阈值调高,避免出现拦截实例公网IP的情况发生,具体请参见DDoS基础防护。 案例二:安全狗程序异常 使用控制台远程连接功能登录到Windows实例后,在系统桌面右下角,安全狗弹出错误提示,系统显示类似如下。该问题可能是由于安全狗软件出现异常导致的。可通过Windows系统卸载安全狗软件后,重启服务器,网络即可恢复。 步骤十一:尝试重启实例 若用阿里云提供的远程连接功能仍无法成功连接实例,请尝试重启实例。重启操作会使实例停止工作,从而中断业务,请谨慎执行。 提示:重启实例前,需给实例创建快照,用于数据备份或者制作镜像。创建快照的方法请参见创建快照。 登录ECS 管理控制台,单击左侧导航栏中的 实例。 在页面顶部的选择对应的地域,在目标实例右侧单击 更多 > 实例状态 > 重启,再单击 确认 即可。

1934890530796658 2020-03-25 22:43:56 0 浏览量 回答数 0

回答

以前上网很快,最近1周网速突然很慢,我是3个人共用一个路由器的,以前3个人用时也是很快。现在是我看视频很卡,用了优化大师优化,c盘文件及桌面文件都清理了,用360也清理了垃圾文件,用小红伞杀毒也没杀出病毒,就是老样子。现在两个人用一个,也是很慢,到半夜了在搜狐视频或是酷六什么那看电影,只剩我一个人在用,还是卡。 请问高手能帮我诊断下怎么回事,或是怎么设置下改变下状况。另一个人也是发现网速慢了,我们都是一个样子,可能是被盗了吗? 我用360查看网络连接,system id process 的连接很多,显示是没有连接上,状态是等待,都是端口80,目标归属地什么北京联通,大连联通,深圳联通的,有7个左右,我qq也没开啊,想结束也结束不了,只是在迅雷看看里看电影,没有装他的插件。把它关了还是有。向高手请教?插件只有搜狗输入法,迅雷,360,迅雷看看没有其他的 " 网速变慢的原因有很多可能,比如网络本身的问题、网卡硬件问题,有或者是系统问题等等。可以通过其他联网设备确认下是否有网速变慢的情况;如果网络本身没有问题(其他设备可以正常连接),问题就出现电脑本身: 1,、疑难解答 可以先试试更新网卡驱动,若无效,我们可以利用系统自身提供的【疑难解答】功能来寻求解决。直接搜索进入【疑难解答】然后点击右侧的对应项目,选择【运行疑难解答】,按照向导提示进行操作即可,看是否能够解决网络连接问题。 <img src=""https://gss0.baidu.com/-fo3dSag_xI4khGko9WTAnF6hhy/zhidao/wh%3D600%2C800/sign=f415cd6cda3f8794d3aa4028e22b22cc/a6efce1b9d16fdfac901e83aba8f8c5495ee7bf0.jpg""> <img src=""https://gss0.baidu.com/-Po3dSag_xI4khGko9WTAnF6hhy/zhidao/wh%3D600%2C800/sign=1695c9ff00f41bd5da06e0f261eaadf3/f2deb48f8c5494ee9b9421cd23f5e0fe98257eab.jpg""> 2、网络重置 上述均不能解决的话,最后可通过进行网络重置来彻底解决。路径:【开始】—【设置】—【网络和Internet】—【状态】,在右侧列表中找到【网络重置】并点击,按提示完成操作即可。 <img src=""https://gss0.baidu.com/-Po3dSag_xI4khGko9WTAnF6hhy/zhidao/wh%3D600%2C800/sign=e6034daa9c58d109c4b6a1b4e168e087/11385343fbf2b211a844ab9ac48065380dd78eff.jpg""> 另外,在有限的硬件条件下,想让现有的网速能够快一些,具体可以参考以下步骤: 步骤1. Win+R组合键后输入gpedit.msc进入组策略编辑器,依次进入“计算机配置-Windows设置”后,再右侧找到“基于策略的Qos”的这个选项。 <img src=""https://gss0.baidu.com/-Po3dSag_xI4khGko9WTAnF6hhy/zhidao/wh%3D600%2C800/sign=c08ee009a564034f0f98ca009ff35509/a71ea8d3fd1f41341c7f2baa2b1f95cad0c85e9d.jpg""> 步骤2. 在“基于策略的Qos”上点击鼠标右键,选择“高级QoS设置”,在入站TCP流量选项卡中,勾选”制定入站TCP吞吐量级别“,选择最后那个”级别3“。 <img src=""https://gss0.baidu.com/9fo3dSag_xI4khGko9WTAnF6hhy/zhidao/wh%3D600%2C800/sign=f340223fb8fd5266a77e34129b28bb13/e1fe9925bc315c604623453b83b1cb13485477ab.jpg""> 注意的:如果在更改完设置后发现上网时系统出现假死、卡顿等问题,可以把上面的“制定入站TCP吞吐量级别“设置调整到“级别2”,减少数据处理对系统硬件的压力(内存小于4GB,则建议使用默认最小吞吐量)。 “高级QoS设置“是什么呢? 通过高级服务质量 (QoS) 设置,您可以管理带宽使用以及计算机处理应用程序和服务设置的 DSCP 标记(而不是组策略设置的标记)的方式。高级 QoS 设置仅可在计算机级别应用,而 QoS 策略在计算机级别和用户级别均可应用。 若要更改吞吐量级别,选中“指定入站 TCP 吞吐量级别”复选框,然后根据下表选择吞吐量级别。吞吐量级别可以等于或小于最大值,具体取决于网络条件。 <img src=""https://gss0.baidu.com/9vo3dSag_xI4khGko9WTAnF6hhy/zhidao/wh%3D600%2C800/sign=eea0cfe33bfae6cd0ce1a3673f83231c/ca1349540923dd542fc589bcdf09b3de9d8248ab.jpg"">" 一、网络自身问题 您想要连接的目标网站所在的服务器带宽不足或负载过大。处理办法很简单,请换个时间段再上或者换个目标网站。 二、网线问题导致网速变慢 我们知道,双绞线是由四对线按严格的规定紧密地绞和在一起的,用来减少串扰和背景噪音的影响。同时,在T568A标准和T568B标准中仅使用了双绞线的 1、2和3、6四条线,其中,1、2用于发送,3、6用于接收,而且1、2必须来自一个绕对,3、6必须来自一个绕对。只有这样,才能最大限度地避免串扰,保证数据传输。本人在实践中发现不按正确标准(T586A、T586B)制作的网线,存在很大的隐患。表现为:一种情况是刚开始使用时网速就很慢;另一种情况则是开始网速正常,但过了一段时间后,网速变慢。后一种情况在台式电脑上表现非常明显,但用笔记本电脑检查时网速却表现为正常。对于这一问题本人经多年实践发现,因不按正确标准制作的网线引起的网速变慢还同时与网卡的质量有关。一般台式计算机的网卡的性能不如笔记本电脑的,因此,在用交换法排除故障时,使用笔记本电脑检测网速正常并不能排除网线不按标准制作这一问题的存在。我们现在要求一律按T586A、T586B标准来压制网线,在检测故障时不能一律用笔记本电脑来代替台式电脑。 三、网络中存在回路导致网速变慢 当网络涉及的节点数不是很多、结构不是很复杂时,这种现象一般很少发生。但在一些比较复杂的网络中,经常有多余的备用线路,如无意间连上时会构成回路。比如网线从网络中心接到计算机一室,再从计算机一室接到计算机二室。同时从网络中心又有一条备用线路直接连到计算机二室,若这几条线同时接通,则构成回路,数据包会不断发送和校验数据,从而影响整体网速。这种情况查找比较困难。为避免这种情况发生,要求我们在铺设网线时一定养成良好的习惯:网线打上明显的标签,有备用线路的地方要做好记载。当怀疑有此类故障发生时,一般采用分区分段逐步排除的方法。 四、网络设备硬件故障引起的广播风暴而导致网速变慢 作为发现未知设备的主要手段,广播在网络中起着非常重要的作用。然而,随着网络中计算机数量的增多,广播包的数量会急剧增加。当广播包的数量达到30%时,网络的传输效率将会明显下降。当网卡或网络设备损坏后,会不停地发送广播包,从而导致广播风暴,使网络通信陷于瘫痪。因此,当网络设备硬件有故障时也会引起网速变慢。当怀疑有此类故障时,首先可采用置换法替换集线器或交换机来排除集线设备故障。如果这些设备没有故障,关掉集线器或交换机的电源后,DOS下用 “Ping”命令对所涉及计算机逐一测试,找到有故障网卡的计算机,更换新的网卡即可恢复网速正常。网卡、集线器以及交换机是最容易出现故障引起网速变慢的设备。 五、网络中某个端口形成了瓶颈导致网速变慢 实际上,路由器广域网端口和局域网端口、交换机端口、集线器端口和服务器网卡等都可能成为网络瓶颈。当网速变慢时,我们可在网络使用高峰时段,利用网管软件查看路由器、交换机、服务器端口的数据流量;也可用 Netstat命令统计各个端口的数据流量。据此确认网络数据流通瓶颈的位置,设法增加其带宽。具体方法很多,如更换服务器网卡为100M或1000M、安装多个网卡、划分多个VLAN、改变路由器配置来增加带宽等,都可以有效地缓解网络瓶颈,可以最大限度地提高数据传输速度。 六、蠕虫病毒的影响导致网速变慢 通过E-mail散发的蠕虫病毒对网络速度的影响越来越严重,危害性极大。这种病毒导致被感染的用户只要一上网就不停地往外发邮件,病毒选择用户个人电脑中的随机文档附加在用户机子的通讯簿的随机地址上进行邮件发送。成百上千的这种垃圾邮件有的排着队往外发送,有的又成批成批地被退回来堆在服务器上。造成个别骨干互联网出现明显拥塞,网速明显变慢,使局域网近于瘫痪。因此,我们必须及时升级所用杀毒软件;计算机也要及时升级、安装系统补丁程序,同时卸载不必要的服务、关闭不必要的端口,以提高系统的安全性和可靠性。 七、防火墙的过多使用 防火墙的过多使用也可导致网速变慢,处理办法不必多说,卸载下不必要的防火墙只保留一个功能强大的足以。 八、系统资源不足 您可能加载了太多的运用程序在后台运行,请合理的加载软件或删除无用的程序及文件,将资源空出,以达到提高网速的目的。 您好,如您的宽带出现故障,可关注“中国联通”微信公众号,点击“客户服务>宽带报障>常见故障指引”,查看对应故障的处理方式。 如仍无法解决,可通过以下方式自助报障: 【方式一】关注“中国联通”微信公众号,点击“客户服务>宽带报障>在线报障”; 【方式二】登录中国联通手机营业厅APP,点击“服务>宽带>宽带办理服务>宽带报障”。 1...用360安全卫士查一下启动项,可能是垃圾插件太多了。现在P2P插件很吸血的。优化一下。 2...把3台电脑恢复系统,还有问题就是线路的问题了。 你把路由器 关掉重启 或者 重装 网卡驱动 试试吧。 最好还是重装。 重装还不好使 就是 宽带问题。

保持可爱mmm 2019-12-02 02:14:41 0 浏览量 回答数 0

问题

Azure 中的 Windows 虚拟机概述

cbits 2019-12-01 21:36:59 2114 浏览量 回答数 0

问题

“Ceph浅析”系列之七——关于Ceph的若干想法:报错

kun坤 2020-06-08 11:04:40 6 浏览量 回答数 1

问题

高效运维最佳实践(03):Redis集群技术及Codis实践

柚子 2019-12-01 21:48:00 29893 浏览量 回答数 1

问题

Centos 系统优化思路整理

holdb 2019-12-01 22:03:44 8681 浏览量 回答数 5

回答

1、 描述下应用架构的发展历程 目前,架构的发展历程是从单体架构、分布式架构、SOA架构,再到如今流行的微服务架构 2、单体架构的优点、缺点 优点: I 易于开发,开发人员可在短时间内开发完成单体应用 II 易于测试 III 易于部署 缺点: I 灵活程度不够,一旦修改,自上而下需要整体部署,才可以展现出效果,同时开发效率低,降低团队灵活性 II 降低系统的性能 III 系统启动、重启缓慢 IV 扩展性差 3、 什么是传统的分布式架构 简单来说,就是按照业务垂直切分,每个应用都是一个单体架构,通过API接口互相调用 好处是,依赖解耦,理解清晰,开发便捷速度,缺点是调用存在风险,技术复杂,可靠性降低 4、 SOA架构的优点、缺点 面向服务的SOA架构,根据不同的业务建立不同的服务,优点,模块拆分,开发聚合,降低了耦合度,增加功能,增加子项目即可,方便部署,灵活的分布式部署 缺点,调用、交互采用远程通信,接口开发增加工作量 5、 什么是微服务技术 微服务架构在某种程度上是SOA架构的发展。微服务是一种架构风格,对于一个大型的复杂的业务应用系统,业务功能可以拆分为多个独立的微服务,各个服务间是松耦合的,通过各种远程通信协议,实现交互,各个服务可以独立部署、扩容、升降级 6、 目前流行的微服务解决方案 目前最常见的,包括两种,一种基于SpringCloud中间件的微服务解决方案,选型比较中立,内部组件,可以自由更换搭配使用,大致上三种,服务发现,一种Eureka,一种Consul,一种etcd或者阿里nacos,共用组件,服务调用组件Feign。负载均衡ribbon,熔断器hystrix,网关,zuul,gateway,等,配置中心,携程阿波罗,nacos,Config;全链路监控,zipkin,pinpoint,skywalking,其他组件 另一种基于Dubbo实现微服务解决方案,可以Dubbo,nacos,其他 7、 什么是中间件 中间件,是在操作系统之上,应用软件之下的中间层软件。本质上归结为技术架构。常见的中间件,包括服务治理中间件、配置中心、链路监控、分布式事务、分布式定时任务、分布式缓存、消息中间件、API网关、数据库中间件等 8、 什么是Spring Cloud 也是一个中间件,由Spring官方开发维护,基于SpringBoot技术框架,提供了一整套的微服务解决方案。包括服务注册与发现、配置中心、全链路监控、API网关、熔断器等组件,可以随需扩展或替换使用 9、 SpringCloud项目模块 注册中心 Eureka 第一代网关 Zuul 多语言 Sidecar 负载均衡 Ribbon 熔断器 Hystrix 第二代网关 gateway 集群监控 Turbine 声明式HTTP客户端 Feign 注册中心 consul 链路追踪 sleuth 配置中心 config 服务总线 Bus 等 10、 SpringCloud与服务治理中间件 服务治理中间件包含服务注册与发现、服务路由、复杂均衡、自我保护、丰富的治理管理机制等功能。服务路由包含服务上下线、在线测试、就近选择、A/B测试、灰度发布等,负载均衡支持根据状态权重进行负载。自我保护,服务降级、优雅降级、流量控制,Spring Cloud中使用了相关 11、 Springcloud与配置中心中间件 单体应用中,属性配置和代码采用硬编码形式放在一起,简单方便,但是在分布式系统中,多个服务实例,需要分别管理每个服务下对应的配置项,往往配置项项目一致,内容存在偏差,则上线需要检查所有的配置项,如果修改配置项,就要重启等,开发管理相当麻烦,另外还会涉及安全性的问题,比如数据库密码等的存放。分布式系统中,需要我们统一管理,负责管理的中间件,就是配置中心。配置中心,应该具备的功能,分别是支持各种复杂的配置场景,与公司的运维体系和权限体系集成一体,各种配置兼容支持。 SpringCloud Config是配置中心中间件,将应用原本放在本地的配置,统一放置到中心服务器,拥有了更好地管理发布能力,基于应用、环境、版本三个维度管理,配置存储支持git等。无缝支持Spring技术的Environment和PropertySource接口 12、 Springcloud与网关中间件 API是在系统边界上,面向API的串行集中式强管控服务,至少具备如下功能 I 统一接入功能,提供一个高性能、高并发、高可靠的网关服务,也要支持负载均衡、异地多活、容灾切换 Ii 协议适配功能,因为网关是集中式强管控,必须要提供满足各个请求协议,能够协议适配 Iii 流量管控 Iv 安全防护、权限校验 SpringCloud第一代网关采用zuul,根据默认或者配置的路由规则,进行负载或者路由,只能支持基本功能,如果想要实现高度定制更多功能,就需要,进行开发filter过滤器 SpringCloud第二代网关采用Gateway,zuul采用每个请求分配一个线程的方式,不能支持高并发,gateway采用netty框架,具有强大的高并发处理能力,且实现了网管基本功能,例如安全,监控,限流等 13、 Springcloud与全链路监控中间件 分布式系统下,对于日志追踪等,有迫切的需求,需要一个可视化展示监控平台,进行汇集。全链路监控中间件基本功能如下,定位慢调用:各种web服务调用,慢sql执行,定位各种错误,定位各种异常,展现服务依赖,展现调用链路,应用告警SpringCloud采用sleuth 14、 Springcloud与分布式事务 微服务架构之后,困难,在于,1)系统拆分后,服务间调用通信、故障处理变得复杂2)微服务化后,服务调用的分布式事务问题突出3)数量众多,测试部署运维复杂,那么随着Docker容器技术、Devops技术的发展,各种PAAS平台工具的退出,变得愈加容易。分布式事务没有统一方案 15、 Springcloud与领域驱动 微服务作为一种架构风格,提供了快速开发微服务应用的能力,但是对于业务如何开发,业务架构如何治理,架构如何防腐,还需要方法论进行指导,领域驱动作为业务治理和架构防腐的方法论,结合起来,才能更好地提供企业使用 16、 SpringCloud与gRPC协议 通过SpringCloud进行搭建微服务应用,服务间得通信往往采用的是Feign中间件形式,实现简单快捷的调用,底层采用的http形式,相对于gRPC协议或者RPC协议的调用来说,性能相对低下,因此,可以切换开源技术框架gRPC实现 17、 SpringCloud与Dubbo生态融合 SpringCloud与Dubbo在本质上不在一个领域没有可比性。Dubbo是一个基于RPC协议的通信框架,而SpringCloud是实现微服务中间件,随着发展,两者生态也在不断融合,目前已经开源了Spring-cloud-dubbo的项目

huc_逆天 2020-02-24 21:01:42 0 浏览量 回答数 0

回答

1、 描述下应用架构的发展历程 目前,架构的发展历程是从单体架构、分布式架构、SOA架构,再到如今流行的微服务架构 2、单体架构的优点、缺点 优点: I 易于开发,开发人员可在短时间内开发完成单体应用 II 易于测试 III 易于部署 缺点: I 灵活程度不够,一旦修改,自上而下需要整体部署,才可以展现出效果,同时开发效率低,降低团队灵活性 II 降低系统的性能 III 系统启动、重启缓慢 IV 扩展性差 3、 什么是传统的分布式架构 简单来说,就是按照业务垂直切分,每个应用都是一个单体架构,通过API接口互相调用 好处是,依赖解耦,理解清晰,开发便捷速度,缺点是调用存在风险,技术复杂,可靠性降低 4、 SOA架构的优点、缺点 面向服务的SOA架构,根据不同的业务建立不同的服务,优点,模块拆分,开发聚合,降低了耦合度,增加功能,增加子项目即可,方便部署,灵活的分布式部署 缺点,调用、交互采用远程通信,接口开发增加工作量 5、 什么是微服务技术 微服务架构在某种程度上是SOA架构的发展。微服务是一种架构风格,对于一个大型的复杂的业务应用系统,业务功能可以拆分为多个独立的微服务,各个服务间是松耦合的,通过各种远程通信协议,实现交互,各个服务可以独立部署、扩容、升降级 6、 目前流行的微服务解决方案 目前最常见的,包括两种,一种基于SpringCloud中间件的微服务解决方案,选型比较中立,内部组件,可以自由更换搭配使用,大致上三种,服务发现,一种Eureka,一种Consul,一种etcd或者阿里nacos,共用组件,服务调用组件Feign。负载均衡ribbon,熔断器hystrix,网关,zuul,gateway,等,配置中心,携程阿波罗,nacos,Config;全链路监控,zipkin,pinpoint,skywalking,其他组件 另一种基于Dubbo实现微服务解决方案,可以Dubbo,nacos,其他 7、 什么是中间件 中间件,是在操作系统之上,应用软件之下的中间层软件。本质上归结为技术架构。常见的中间件,包括服务治理中间件、配置中心、链路监控、分布式事务、分布式定时任务、分布式缓存、消息中间件、API网关、数据库中间件等 8、 什么是Spring Cloud 也是一个中间件,由Spring官方开发维护,基于SpringBoot技术框架,提供了一整套的微服务解决方案。包括服务注册与发现、配置中心、全链路监控、API网关、熔断器等组件,可以随需扩展或替换使用 9、 SpringCloud项目模块 注册中心 Eureka 第一代网关 Zuul 多语言 Sidecar 负载均衡 Ribbon 熔断器 Hystrix 第二代网关 gateway 集群监控 Turbine 声明式HTTP客户端 Feign 注册中心 consul 链路追踪 sleuth 配置中心 config 服务总线 Bus 等 10、 SpringCloud与服务治理中间件 服务治理中间件包含服务注册与发现、服务路由、复杂均衡、自我保护、丰富的治理管理机制等功能。服务路由包含服务上下线、在线测试、就近选择、A/B测试、灰度发布等,负载均衡支持根据状态权重进行负载。自我保护,服务降级、优雅降级、流量控制,Spring Cloud中使用了相关 11、 Springcloud与配置中心中间件 单体应用中,属性配置和代码采用硬编码形式放在一起,简单方便,但是在分布式系统中,多个服务实例,需要分别管理每个服务下对应的配置项,往往配置项项目一致,内容存在偏差,则上线需要检查所有的配置项,如果修改配置项,就要重启等,开发管理相当麻烦,另外还会涉及安全性的问题,比如数据库密码等的存放。分布式系统中,需要我们统一管理,负责管理的中间件,就是配置中心。配置中心,应该具备的功能,分别是支持各种复杂的配置场景,与公司的运维体系和权限体系集成一体,各种配置兼容支持。 SpringCloud Config是配置中心中间件,将应用原本放在本地的配置,统一放置到中心服务器,拥有了更好地管理发布能力,基于应用、环境、版本三个维度管理,配置存储支持git等。无缝支持Spring技术的Environment和PropertySource接口 12、 Springcloud与网关中间件 API是在系统边界上,面向API的串行集中式强管控服务,至少具备如下功能 I 统一接入功能,提供一个高性能、高并发、高可靠的网关服务,也要支持负载均衡、异地多活、容灾切换 Ii 协议适配功能,因为网关是集中式强管控,必须要提供满足各个请求协议,能够协议适配 Iii 流量管控 Iv 安全防护、权限校验 SpringCloud第一代网关采用zuul,根据默认或者配置的路由规则,进行负载或者路由,只能支持基本功能,如果想要实现高度定制更多功能,就需要,进行开发filter过滤器 SpringCloud第二代网关采用Gateway,zuul采用每个请求分配一个线程的方式,不能支持高并发,gateway采用netty框架,具有强大的高并发处理能力,且实现了网管基本功能,例如安全,监控,限流等 13、 Springcloud与全链路监控中间件 分布式系统下,对于日志追踪等,有迫切的需求,需要一个可视化展示监控平台,进行汇集。全链路监控中间件基本功能如下,定位慢调用:各种web服务调用,慢sql执行,定位各种错误,定位各种异常,展现服务依赖,展现调用链路,应用告警SpringCloud采用sleuth 14、 Springcloud与分布式事务 微服务架构之后,困难,在于,1)系统拆分后,服务间调用通信、故障处理变得复杂2)微服务化后,服务调用的分布式事务问题突出3)数量众多,测试部署运维复杂,那么随着Docker容器技术、Devops技术的发展,各种PAAS平台工具的退出,变得愈加容易。分布式事务没有统一方案 15、 Springcloud与领域驱动 微服务作为一种架构风格,提供了快速开发微服务应用的能力,但是对于业务如何开发,业务架构如何治理,架构如何防腐,还需要方法论进行指导,领域驱动作为业务治理和架构防腐的方法论,结合起来,才能更好地提供企业使用 16、 SpringCloud与gRPC协议 通过SpringCloud进行搭建微服务应用,服务间得通信往往采用的是Feign中间件形式,实现简单快捷的调用,底层采用的http形式,相对于gRPC协议或者RPC协议的调用来说,性能相对低下,因此,可以切换开源技术框架gRPC实现 17、 SpringCloud与Dubbo生态融合 SpringCloud与Dubbo在本质上不在一个领域没有可比性。Dubbo是一个基于RPC协议的通信框架,而SpringCloud是实现微服务中间件,随着发展,两者生态也在不断融合,目前已经开源了Spring-cloud-dubbo的项目

huc_逆天 2020-02-25 11:08:12 0 浏览量 回答数 0

回答

Layout Go工程项目的整体组织 首先我们看一下整个 Go 工程是怎么组织起来的。 很多同事都在用 GitLab 的,GitLab 的一个 group 里面可以创建很多 project。如果我们进行微服务化改造,以前很多巨石架构的应用可能就拆成了很多个独立的小应用。那么这么多小应用,你是要建 N 个 project 去维护,还是说按照部门或者组来组织这些项目呢?在 B 站的话,我们之前因为是 Monorepo,现在是按照部门去组织管理代码,就是说在单个 GitLab 的 project 里面是有多个 app 的,每一个 app 就表示一个独立的微服务,它可以独立去交付部署。所以说我们看到下面这张图里面,app 的目录里面是有好多个子目录的,比方说我们的评论服务,会员服务。跟 app 同级的目录有一个叫 pkg,可以存放业务有关的公共库。这是我们的一个组织方式。当然,还有一种方式,你可以按照 GitLab 的 project 去组织,但我觉得这样的话可能相对要创建的 project 会非常多。 如果你按部门组织的话,部门里面有很多 app,app 目录怎么去组织?我们实际上会给每一个 app 取一个全局唯一名称,可以理解为有点像 DNS 那个名称。我们对业务的命名也是一样的,我们基本上是三段式的命名,比如账号业务,它是一个账号业务、服务、子服务的三段命名。三段命名以后,在这个 app 目录里面,你也可以按照这三层来组织。比如我们刚刚说的账号目录,我可能就是 account 目录,然后 VIP,在 VIP 目录下可能会放各种各样的不同角色的微服务,比方说可能有一些是做 job,做定时任务或者流式处理的一些任务,有可能是做对外暴露的 API 的一些服务,这个就是我们关于整个大的 app 的组织的一种形式。 微服务中的 app 服务分类 微服务中单个 app 的服务里又分为几类不同的角色。我们基本上会把 app 分为 interface(BFF)、service、job(补充:还有一个 task,偏向定时执行,job 偏向流式) 和 admin。 Interface 是对外的业务网关服务,因为我们最终是面向终端用户的 API,面向 app,面向 PC 场景的,我们把这个叫成业务网关。因为我们不是统一的网关,我们可能是按照大的业务线去独立分拆的一些子网关,这个的话可以作为一个对外暴露的 HTTP 接口的一个目录去组织它的代码,当然也可能是 gRPC 的(参考 B 站对外的 gRPC Moss 分享)。 Service 这个角色主要是面向对内通信的微服务,它不直接对外。也就是说,业务网关的请求会转发或者是会 call 我们的内部的 service,它们之间的通讯可能是使用自己的 RPC,在 b 站我们主要是使用 gRPC。使用 gRPC 通讯以后,service 它因为不直接对外,service 之间可能也可以相互去 call。 Admin 区别于 service,很多应用除了有面向用户的一些接口,实际上还有面向企业内部的一些运营侧的需求,通常数据权限更高,从安全设计角度需要代码物理层面隔离,避免意外。 第四个是 ecode。我们当时也在内部争论了很久,我们的错误码定义到底是放在哪里?我们目前的做法是,一个应用里面,假设你有多种角色,它们可能会复用一些错误码。所以说我们会把我们的 ecode 给单独抽出来,在这一个应用里面是可以复用的。注意,它只在这一个应用里面复用,它不会去跨服跨目录应用,它是针对业务场景的一个业务错误码的组织。 App 目录组织 我们除了一个应用里面多种角色的这种情况,现在展开讲一下具体到一个 service 里面,它到底是怎么组织的。我们的 app 目录下大概会有 api、cmd、configs、 internal 目录,目录里一般还会放置 README、CHANGELOG、OWNERS。 API 是放置 api 定义以及对应的生成的 client 代码,包含基于 pb 定义(我们使用 PB 作为 DSL 描述 API) 生成的 swagger.json。 而 cmd,就是放 main 函数的。Configs 目录主要是放一些服务所需的配置文件,比方说说我们可能会使用 TOML 或者是使用 YAML 文件。 Internal 的话,它里面有四个子目录,分别是 model、dao、service 和 server。Model 的定位职责就是对我们底层存储的持久化层或者存储层的数据的映射,它是具体的 Go 的一个 struct。我们再看 dao,你实际就是要操作 MySQL 或者 Redis,最终返回的就是这些 model(存储映射)。Service 组织起来比较简单,就是我们通过 dao 里面的各个方法来完成一个完整的业务逻辑。我们还看到有个 server,因为我一个微服务有可能企业内部不一定所有 RPC 都统一,那我们处于过渡阶段,所以 server 里面会有两个小目录,一个是 HTTP 目录,暴露的是 HTTP 接口,还有一个是 gRPC 目录,我们会暴露 gRPC 的协议。所以在 server 里面,两个不同的启动的 server,就是说一个服务和启动两个端口,然后去暴露不同的协议,HTTP 接 RPC,它实际上会先 call 到 service,service 再 call 到 dao,dao 实际上会使用 model 的一些数据定义 struct。但这里面有一个非常重要的就是,因为这个结构体不能够直接返回给我们的 api 做外对外暴露来使用,为什么?因为可能从数据库里面取的敏感字段,当我们实际要返回到 api 的时候,可能要隐藏掉一些字段,在 Java 里面,会抽象的一个叫 DTO 的对象,它只是用来传输用的,同理,在我们 Go 里面,实际也会把这些 model 的一些结构体映射成 api 里面的结构体(基于 PB Message 生成代码后的 struct)。 Rob Pike 当时说过的一句话,a little copying is better than a little dependency,我们就遵循了这个理念。在我们这个目录结构里面,有 internal 目录,我们知道 Go 的目录只允许这个目录里面的人去 import 到它,跨目录的人实际是不能直接引用到它的。所以说,我们看到 service 有一个 model,那我的 job 代码,我做一些定时任务的代码或者是我的网关代码有可能会映射同一个 model,那是不是要把这个 model 放到上一级目录让大家共享?对于这个问题,其实我们当时内部也争论过很久。我们认为,每一个微服务应该只对自己的 model 负责,所以我们宁愿去做一小部分的代码 copy,也不会去为了几个服务之间要共享这一点点代码,去把这个 model 提到和 app 目录级别去共用,因为你一改全错,当然了,你如果是拷贝的话,就是每个地方都要去改,那我们觉得,依赖的问题可能会比拷贝代码相对来说还是要更复杂的。 这个是一个标准的 PB 文件,就是我们内部的一个 demo 的 service。最上面的 package 是 PB 的包名,demo.service.v1,这个包使用的是三段式命名,全局唯一的名称。那这个名称为什么不是用 ID?我见过有些公司对内部做的 CMDB 或者做服务树去管理企业内部微服务的时候,是用了一些名称加上 ID 来搞定唯一性,但是我们知道后面那一串 ID 数字是不容易被传播或者是不容易被记住的,这也是 DNS 出来的一个意义,所以我们用绝对唯一的一个名称来表示这个包的名字,在后面带上这一个 PB 文件的版本号 V1。 我们看第二段定义,它有个 Service Demo 代码,其实就表示了我们这个服务要启动的服务的一个名称,我们看到这个服务名称里面有很多个 RPC 的方法,表示最终这一个应用或者这个 service 要对外暴露这几个 RPC 的方法。这里面有个小细节,我们看一下 SayHello 这个方法,实际它有 option 的一个选项。通过这一个 PB 文件,你既可以描述出你要暴露的是 gRPC 协议,又暴露出 HTTP 的一个接口,这个好处是你只需要一个 PB 文件描述你暴露的所有 api。我们回想一下,我们刚刚目录里面有个 api 目录,实际这里面就是放这一个 PB 文件,描述这一个工程到底返回的接口是什么。不管是 gRPC 还是 HTTP 都是这一个文件。还有一个好处是什么?实际上我们可以在 PB 文件里面加上很多的注释。用 PB 文件的好处是你不需要额外地再去写文档,因为写文档和写服务的定义,它本质上是两个步骤,特别容易不一致,接口改了,文档不同步。我们如果基于这一个 PB 文件,它生成的 service 代码或者调用代码或者是文档都是唯一的。 依赖顺序与 api 维护 就像我刚刚讲到的,model 是一个存储层的结构体的一一映射,dao 处理一些数据读写包,比方说数据库缓存,server 的话就是启动了一些 gRPC 或者 HTTP Server,所以它整个依赖顺序如下:main 函数启动 server,server 会依赖 api 定义好的 PB 文件,定义好这些方法或者是服务名之后,实际上生成代码的时候,比方说 protocbuf 生成代码的时候,它会把抽象 interface 生成好。然后我们看一下 service,它实际上是弱依赖的 api,就是说我的 server 启动以后,要注册一个具体的业务代码的逻辑,映射方法,映射名字,实际上是弱依赖的 api 生成的 interface 的代码,你就可以很方便地启动你的 server,把你具体的 service 的业务逻辑给注入到这个 server,和方法进行一一绑定。最后,dao 和 service 实际上都会依赖这个 model。 因为我们在 PB 里面定义了一些 message,这些 message 生成的 Go 的 struct 和刚刚 model 的 struct 是两个不同的对象,所以说你要去手动 copy 它,把它最终返回。但是为了快捷,你不可能每次手动去写这些代码,因为它要做 mapping,所以我们又把 K8s 里类似 DeepCopy 的两个结构体相互拷贝的工具给抠出来了,方便我们内部 model 和 api 的 message 两个代码相互拷贝的时候,可以少写一些代码,减少一些工作量。 上面讲的就是我们关于工程的一些 layout 实践。简单回溯一下,大概分为几块,第一就是 app 是怎么组织的,app 里面有多种角色的服务是怎么组织的,第三就是一个 app 里面的目录是怎么组织的,最后我重点讲了一下 api 是怎么维护的。 Unittest 测试方法论 现在回顾一下单元测试。我们先看这张图,这张图是我从《Google 软件测试之道》这本书里面抠出来的,它想表达的意思就是最小型的测试不能给我们的最终项目的质量带来最大的信心,它比较容易带来一些优秀的代码质量,良好的异常处理等等。但是对于一个面向用户场景的服务,你只有做大型测试,比方做接口测试,在 App 上验收功能的这种测试,你应用交付的信心可能会更足。这个其实要表达的就是一个“721 原则”。我们就是 70% 写小型测试,可以理解为单元测试,因为它相对来说好写,针对方法级别。20% 是做一些中型测试,可能你要连调几个项目去完成你的 api。剩下 10% 是大型测试,因为它是最终面向用户场景的,你要去使用我们的 App,或者用一些测试 App 去测试它。这个就是测试的一些简单的方法论。 单元测试原则 我们怎么去对待 Go 里面的单元测试?在《Google 软件测试之道》这本书里面,它强调的是对于一个小型测试,一个单元测试,它要有几个特质。它不能依赖外部的一些环境,比如我们公司有测试环境,有持续集成环境,有功能测试环境,你不能依赖这些环境构建自己的单元测试,因为测试环境容易被破坏,它容易有数据的变更,数据容易不一致,你之前构建的案例重跑的话可能就会失败。 我觉得单元测试主要有四点要求。第一,快速,你不能说你跑个单元测试要几分钟。第二,要环境一致,也就是说你跑测试前和跑测试后,它的环境是一致的。第三,你写的所有单元测试的方法可以以任意顺序执行,不应该有先后的依赖,如果有依赖,也是在你测试的这个方法里面,自己去 setup 和 teardown,不应该有 Test Stub 函数存在顺序依赖。第四,基于第三点,你可以做并行的单元测试,假设我写了一百个单元测试,一个个跑肯定特别慢。 doker-compose 最近一段时间,我们演进到基于 docker-compose 实现跨平台跨语言环境的容器依赖管理方案,以解决运行 unittest 场景下的容器依赖问题。 首先,你要跑单元测试,你不应该用 VPN 连到公司的环境,好比我在星巴克点杯咖啡也可以写单元测试,也可以跑成功。基于这一点,Docker 实际上是非常好的解决方式。我们也有同学说,其他语言有一些 in-process 的 mock,是不是可以启动 MySQL 的 mock ,然后在 in-process 上跑?可以,但是有一个问题,你每一个语言都要写一个这样的 mock ,而且要写非常多种,因为我们中间件越来越多,MySQL,HBase,Kafka,什么都有,你很难覆盖所有的组件 Mock。这种 mock 或者 in-process 的实现不能完整地代表线上的情况,比方说,你可能 mock 了一个 MySQL,检测到 query 或者 insert ,没问题,但是你实际要跑一个 transaction,要验证一些功能就未必能做得非常完善了。所以基于这个原因,我们当时选择了 docker-compose,可以很好地解决这个问题。 我们对开发人员的要求就是,你本地需要装 Docker,我们开发人员大部分都是用 Mac,相对来说也比较简单,Windows 也能搞定,如果是 Linux 的话就更简单了。本地安装 Docker,本质上的理解就是无侵入式的环境初始化,因为你在容器里面,你拉起一个 MySQL,你自己来初始化数据。在这个容器被销毁以后,它的环境实际上就满足了我们刚刚提的环境一致的问题,因为它相当于被重置了,也可以很方便地快速重置环境,也可以随时随地运行,你不需要依赖任何外部服务,这个外部服务指的是像 MySQL 这种外部服务。当然,如果你的单元测试依赖另外一个 RPC 的 service 的话,PB 的定义会生成一个 interface,你可以把那个 interface 代码给 mock 掉,所以这个也是能做掉的。对于小型测试来说,你不依赖任何外部环境,你也能够快速完成。 另外,docker-compose 是声明式的 API,你可以声明你要用 MySQL,Redis,这个其实就是一个配置文件,非常简单。这个就是我们在单元测试上的一些实践。 我们现在看一下,service 目录里面多了一个 test 目录,我们会在这个里面放 docker-compose 的 YAML 文件来表示这次单元化测试需要初始化哪些资源,你要构建自己的一些测试的数据集。因为是这样的,你是写 dao 层的单元测试的话,可能就需要 database.sql 做一些数据的初始化,如果你是做 service 的单元测试的话,实际你可以把整个 dao 给 mock 掉,我觉得反而还相对简单,所以我们主要针对场景就是在 dao 里面偏持久层的,利用 docker-compose 来解决。 容器的拉起,容器的销毁,这些工作到底谁来做?是开发同学自己去拉起和销毁,还是说你能够把它做成一个 Library,让我们的同学写单元测试的时候比较方便?我倾向的是后者。所以在我们最终写单元测试的时候,你可以很方便地 setup 一个依赖文件,去 setup 你的容器的一些信息,或者把它销毁掉。所以说,你把环境准备好以后,最终可以跑测试代码也非常方便。当然我们也提供了一些命令函,就是 binary 的一些工具,它可以针对各个语言方便地拉起容器和销毁容器,然后再去执行代码,所以我们也提供了一些快捷的方式。 刚刚我也提到了,就是我们对于 service 也好,API 也好,因为依赖下层的 dao 或者依赖下层的 service,你都很方便 mock 掉,这个写单元测试相对简单,这个我不展开讲,你可以使用 GoMock 或者 GoMonkey 实现这个功能。 Toolchain 我们利用多个 docker-compose 来解决 dao 层的单元测试,那对于我刚刚提到的项目的一些规范,单元测试的一些模板,甚至是我写了一些 dao 的一些占位符,或者写了一些 service 代码的一些占位符,你有没有考虑过这种约束有没有人会去遵循?所以我这里要强调一点,工具一定要大于约束和文档,你写了约束,写了文档,那么你最终要通过工具把它落实。所以在我们内部会有一个类似 go tool 的脚手架,叫 Kratos Tool,把我们刚刚说的约定规范都通过这个工具一键初始化。 对于我们内部的工具集,我们大概会分为几块。第一块就是 API 的,就是你写一个 PB 文件,你可以基于这个 PB 文件生成 gRPC,HTTP 的框架代码,你也可以基于这个 PB 文件生成 swagger 的一些 JSON 文件或者是 Markdown 文件。当然了,我们还会生成一些 API,用于 debug 的 client 方便去调试,因为我们知道,gRPC 调试起来相对麻烦一些,你要去写代码。 还有一些工具是针对 project 的,一键生成整个应用的 layout,非常方便。我们还提了 model,就是方便 model 和 DTO,DTO 就是 API 里面定义的 message 的 struct 做 DeepCopy,这个也是一个工具。 对于 cache 的话,我们操作 memcache,操作 Redis 经常会要做什么逻辑?假如我们有一个 cache aside 场景,你读了一个 cache,cache miss 要回原 DB,你要把这个缓存回塞回去,甚至你可能这个回塞缓存想异步化,甚至是你要去读这个 DB 的时候要做归并回源(singleflight),我们把这些东西做成一些工具,让它整个回源到 DB 的逻辑更加简单,就是把这些场景描述出来,然后你通过工具可以一键生成这些代码,所以也是会比较方便。 我们再看最后一个,就是 test 的一些工具。我们会基于项目里面,比方说 dao 或者是 service 定义的 interface 去帮你写好 mock 的代码,我直接在里面填,只要填代码逻辑就行了,所以也会加速我们的生产。 上图是 Kratos 的一个 demo,基本就是支持了一些 command。这里就是一个 kratos new kratos-demo 的一个工程,-d YourPath 把它导到某一个路径去,--proto 顺便把 API 里面的 proto 代码也生成了,所以非常简单,一行就可以很快速启动一个 HTTP 或者 gRPC 服务。 我们知道,一个微服务的框架实际非常重,有很多初始化的方式等等,非常麻烦。所以说,你通过脚手架的方式就会非常方便,工具大于约定和文档这个这个理念就是这么来的。 Configuration 讲完工具以后,最后讲一下配置文件。我为什么单独提一下配置文件?实际它也是工程化的一部分。我们一个线上的业务服务包含三大块,第一,应用程序,第二,配置文件,第三,数据集。配置文件最容易导致线上出 bug,因为你改一行配置,整个行为可能跟 App 想要的行为完全不一样。而且我们的代码的开发交付需要经过哪些流程?需要 commit 代码,需要 review,需要单元测试,需要 CD,需要交付到线上,需要灰度,它的整个流程是非常长的。在一步步的环境里面,你的 bug 需要前置解决,越前置解决,成本越低。因为你的代码的开发流程是这么一个 pipeline,所以 bug 最终流到线上的概率很低,但是配置文件没有经过这么复杂的流程,可能大家发现线上有个问题,决定要改个线上配置,就去配置中心或者配置文件改,然后 push 上线,接着就问题了,这个其实很常见。 从 SRE 的角度来说,导致线上故障的主因就是来自配置变更,所以 SRE 很大的工作是控制变更管理,如果能把变更管理做好,实际上很多问题都不会出现。配置既然在整个应用里面这么重要,那在我们整个框架或者在 Go 的工程化实践里面,我们应该对配置文件做一些什么事情? 我觉得是几个。第一,我们的目标是什么?配置文件不应该太复杂,我见过很多框架,或者是业务的一些框架,它实际功能非常强大,但是它的配置文件超级多。我就发现有个习惯,只要有一个同事写错了这个配置,当我新起一个项目的时候,一定会有人把这个错误的配置拷贝到另外一个系统里面去。然后当发现这个应用出问题的时候,我们一般都会内部说一下,你看看其他同事有没有也配错的,实际这个配错概率非常高。因为你的配置选项越多,复杂性越高,它越容易出错。所以第一个要素就是说,尽量避免复杂的配置文件。配得越多,越容易出错。 第二,实际我们的配置方式也非常多,有些用 JSON,有些用 YAML,有些用 Properties,有些用 INI。那能不能收敛成通用的一种方式呢?无论它是用 Python 的脚本也好,或者是用 JSON 也好,你只要有一种唯一的约定,不需要太多样的配置方式,对我们的运维,对我们的 SRE 同时来说,他跨项目的变更成本会变低。 第三,一定要往简单化去努力。这句话其实包含了几个方面的含义。首先,我们很多配置它到底是必须的还是可选的,如果是可选,配置文件是不是就可以把它踢掉,甚至不要出现?我曾经有一次看到我们 Java 同事的配置 retry 有一个重试默认是零,内部重试是 80 次,直接把 Redis cluster 打故障了,为什么?其实这种事故很低级,所以简单化努力的另外一层含义是指,我们在框架层面,尤其是提供 SDK 或者是提供 framework 的这些同事尽量要做一些防御编程,让这种错配漏配也处于一个可控的范围,比方重试 80 次,你觉得哪个 SDK 会这么做?所以这个是我们要考虑的。但是还有一点要强调的是,我们对于业务开发的同事,我们的配置应该足够的简单,这个简单还包含,如果你的日志基本上都是写在这个目录,你就不要提供这个配置给他,反而不容易出错。但是对于我们内部的一些 infrastructure,它可能需要非常复杂的配置来优化,根据我的场景去做优化,所以它是两种场景,一种是业务场景,足够简单,一种是我要针对我的通用的 infrastructure 去做场景的优化,需要很复杂的配置,所以它是两种场景,所以我们要想清楚你的业务到底是哪一种形态。 还有一个问题就是我们配置文件一定要做好权限的变更和跟踪,因为我们知道上线出问题的时候,我们的第一想法不是查 bug,是先止损,止损先找最近有没有变更。如果发现有变更,一般是先回滚,回滚的时候,我们通常只回滚了应用程序,而忘记回滚了配置。每个公司可能内部的配置中心,或者是配置场景,或者跟我们的二进制的交付上线都不一样,那么这里的理念就是你的应用程序和配置文件一定是同一个版本,或者是某种意义上让他们产生一个版本的映射,比方说你的应用程序 1.0,你的配置文件 2.0,它们之间存在一个强绑定关系,我们在回滚的时候应该是一起回滚的。我们曾经也因为类似的一些不兼容的配置的变更,二进制程序上线,但配置文件忘记回滚,出现过事故,所以这个是要强调的。 另外,配置的变更也要经过 review,如果没问题,应该也是按照 App 发布一样,先灰度,再放量,再全量等等类似的一种方式去推,演进式的这种发布,我们也叫滚动发布,我觉得配置文件也是一样的思路。 加入阿里云钉钉群享福利:每周技术直播,定期群内有奖活动、大咖问答 原文链接

有只黑白猫 2020-01-09 17:29:54 0 浏览量 回答数 0

回答

微服务 (MicroServices) 架构是当前互联网业界的一个技术热点,圈里有不少同行朋友当前有计划在各自公司开展微服务化体系建设,他们都有相同的疑问:一个微服务架构有哪些技术关注点 (technical concerns)?需要哪些基础框架或组件来支持微服务架构?这些框架或组件该如何选型?笔者之前在两家大型互联网公司参与和主导过大型服务化体系和框架建设,同时在这块也投入了很多时间去学习和研究,有一些经验和学习心得,可以和大家一起分享。 服务注册、发现、负载均衡和健康检查和单块 (Monolithic) 架构不同,微服务架构是由一系列职责单一的细粒度服务构成的分布式网状结构,服务之间通过轻量机制进行通信,这时候必然引入一个服务注册发现问题,也就是说服务提供方要注册通告服务地址,服务的调用方要能发现目标服务,同时服务提供方一般以集群方式提供服务,也就引入了负载均衡和健康检查问题。根据负载均衡 LB 所在位置的不同,目前主要的服务注册、发现和负载均衡方案有三种: 第一种是集中式 LB 方案,如下图 Fig 1,在服务消费者和服务提供者之间有一个独立的 LB,LB 通常是专门的硬件设备如 F5,或者基于软件如 LVS,HAproxy 等实现。LB 上有所有服务的地址映射表,通常由运维配置注册,当服务消费方调用某个目标服务时,它向 LB 发起请求,由 LB 以某种策略(比如 Round-Robin)做负载均衡后将请求转发到目标服务。LB 一般具备健康检查能力,能自动摘除不健康的服务实例。服务消费方如何发现 LB 呢?通常的做法是通过 DNS,运维人员为服务配置一个 DNS 域名,这个域名指向 LB。 Fig 1, 集中式 LB 方案 集中式 LB 方案实现简单,在 LB 上也容易做集中式的访问控制,这一方案目前还是业界主流。集中式 LB 的主要问题是单点问题,所有服务调用流量都经过 LB,当服务数量和调用量大的时候,LB 容易成为瓶颈,且一旦 LB 发生故障对整个系统的影响是灾难性的。另外,LB 在服务消费方和服务提供方之间增加了一跳 (hop),有一定性能开销。 第二种是进程内 LB 方案,针对集中式 LB 的不足,进程内 LB 方案将 LB 的功能以库的形式集成到服务消费方进程里头,该方案也被称为软负载 (Soft Load Balancing) 或者客户端负载方案,下图 Fig 2 展示了这种方案的工作原理。这一方案需要一个服务注册表 (Service Registry) 配合支持服务自注册和自发现,服务提供方启动时,首先将服务地址注册到服务注册表(同时定期报心跳到服务注册表以表明服务的存活状态,相当于健康检查),服务消费方要访问某个服务时,它通过内置的 LB 组件向服务注册表查询(同时缓存并定期刷新)目标服务地址列表,然后以某种负载均衡策略选择一个目标服务地址,最后向目标服务发起请求。这一方案对服务注册表的可用性 (Availability) 要求很高,一般采用能满足高可用分布式一致的组件(例如 Zookeeper, Consul, Etcd 等)来实现。 Fig 2, 进程内 LB 方案 进程内 LB 方案是一种分布式方案,LB 和服务发现能力被分散到每一个服务消费者的进程内部,同时服务消费方和服务提供方之间是直接调用,没有额外开销,性能比较好。但是,该方案以客户库 (Client Library) 的方式集成到服务调用方进程里头,如果企业内有多种不同的语言栈,就要配合开发多种不同的客户端,有一定的研发和维护成本。另外,一旦客户端跟随服务调用方发布到生产环境中,后续如果要对客户库进行升级,势必要求服务调用方修改代码并重新发布,所以该方案的升级推广有不小的阻力。 进程内 LB 的案例是 Netflix 的开源服务框架,对应的组件分别是:Eureka 服务注册表,Karyon 服务端框架支持服务自注册和健康检查,Ribbon 客户端框架支持服务自发现和软路由。另外,阿里开源的服务框架 Dubbo 也是采用类似机制。 第三种是主机独立 LB 进程方案,该方案是针对第二种方案的不足而提出的一种折中方案,原理和第二种方案基本类似,不同之处是,他将 LB 和服务发现功能从进程内移出来,变成主机上的一个独立进程,主机上的一个或者多个服务要访问目标服务时,他们都通过同一主机上的独立 LB 进程做服务发现和负载均衡,见下图 Fig 3。 Fig 3 主机独立 LB 进程方案 该方案也是一种分布式方案,没有单点问题,一个 LB 进程挂了只影响该主机上的服务调用方,服务调用方和 LB 之间是进程内调用,性能好,同时,该方案还简化了服务调用方,不需要为不同语言开发客户库,LB 的升级不需要服务调用方改代码。该方案的不足是部署较复杂,环节多,出错调试排查问题不方便。 该方案的典型案例是 Airbnb 的 SmartStack 服务发现框架,对应组件分别是:Zookeeper 作为服务注册表,Nerve 独立进程负责服务注册和健康检查,Synapse/HAproxy 独立进程负责服务发现和负载均衡。Google 最新推出的基于容器的 PaaS 平台 Kubernetes,其内部服务发现采用类似的机制。 服务前端路由微服务除了内部相互之间调用和通信之外,最终要以某种方式暴露出去,才能让外界系统(例如客户的浏览器、移动设备等等)访问到,这就涉及服务的前端路由,对应的组件是服务网关 (Service Gateway),见图 Fig 4,网关是连接企业内部和外部系统的一道门,有如下关键作用: 服务反向路由,网关要负责将外部请求反向路由到内部具体的微服务,这样虽然企业内部是复杂的分布式微服务结构,但是外部系统从网关上看到的就像是一个统一的完整服务,网关屏蔽了后台服务的复杂性,同时也屏蔽了后台服务的升级和变化。安全认证和防爬虫,所有外部请求必须经过网关,网关可以集中对访问进行安全控制,比如用户认证和授权,同时还可以分析访问模式实现防爬虫功能,网关是连接企业内外系统的安全之门。限流和容错,在流量高峰期,网关可以限制流量,保护后台系统不被大流量冲垮,在内部系统出现故障时,网关可以集中做容错,保持外部良好的用户体验。监控,网关可以集中监控访问量,调用延迟,错误计数和访问模式,为后端的性能优化或者扩容提供数据支持。日志,网关可以收集所有的访问日志,进入后台系统做进一步分析。 Fig 4, 服务网关 除以上基本能力外,网关还可以实现线上引流,线上压测,线上调试 (Surgical debugging),金丝雀测试 (Canary Testing),数据中心双活 (Active-Active HA) 等高级功能。 网关通常工作在 7 层,有一定的计算逻辑,一般以集群方式部署,前置 LB 进行负载均衡。 开源的网关组件有 Netflix 的 Zuul,特点是动态可热部署的过滤器 (filter) 机制,其它如 HAproxy,Nginx 等都可以扩展作为网关使用。 在介绍过服务注册表和网关等组件之后,我们可以通过一个简化的微服务架构图 (Fig 5) 来更加直观地展示整个微服务体系内的服务注册发现和路由机制,该图假定采用进程内 LB 服务发现和负载均衡机制。在下图 Fig 5 的微服务架构中,服务简化为两层,后端通用服务(也称中间层服务 Middle Tier Service)和前端服务(也称边缘服务 Edge Service,前端服务的作用是对后端服务做必要的聚合和裁剪后暴露给外部不同的设备,如 PC,Pad 或者 Phone)。后端服务启动时会将地址信息注册到服务注册表,前端服务通过查询服务注册表就可以发现然后调用后端服务;前端服务启动时也会将地址信息注册到服务注册表,这样网关通过查询服务注册表就可以将请求路由到目标前端服务,这样整个微服务体系的服务自注册自发现和软路由就通过服务注册表和网关串联起来了。如果以面向对象设计模式的视角来看,网关类似 Proxy 代理或者 Façade 门面模式,而服务注册表和服务自注册自发现类似 IoC 依赖注入模式,微服务可以理解为基于网关代理和注册表 IoC 构建的分布式系统。 Fig 5, 简化的微服务架构图 服务容错当企业微服务化以后,服务之间会有错综复杂的依赖关系,例如,一个前端请求一般会依赖于多个后端服务,技术上称为 1 -> N 扇出 (见图 Fig 6)。在实际生产环境中,服务往往不是百分百可靠,服务可能会出错或者产生延迟,如果一个应用不能对其依赖的故障进行容错和隔离,那么该应用本身就处在被拖垮的风险中。在一个高流量的网站中,某个单一后端一旦发生延迟,可能在数秒内导致所有应用资源 (线程,队列等) 被耗尽,造成所谓的雪崩效应 (Cascading Failure,见图 Fig 7),严重时可致整个网站瘫痪。 Fig 6, 服务依赖 Fig 7, 高峰期单个服务延迟致雪崩效应 经过多年的探索和实践,业界在分布式服务容错一块探索出了一套有效的容错模式和最佳实践,主要包括: Fig 8, 弹性电路保护状态图 电路熔断器模式 (Circuit Breaker Patten), 该模式的原理类似于家里的电路熔断器,如果家里的电路发生短路,熔断器能够主动熔断电路,以避免灾难性损失。在分布式系统中应用电路熔断器模式后,当目标服务慢或者大量超时,调用方能够主动熔断,以防止服务被进一步拖垮;如果情况又好转了,电路又能自动恢复,这就是所谓的弹性容错,系统有自恢复能力。下图 Fig 8 是一个典型的具备弹性恢复能力的电路保护器状态图,正常状态下,电路处于关闭状态 (Closed),如果调用持续出错或者超时,电路被打开进入熔断状态 (Open),后续一段时间内的所有调用都会被拒绝 (Fail Fast),一段时间以后,保护器会尝试进入半熔断状态 (Half-Open),允许少量请求进来尝试,如果调用仍然失败,则回到熔断状态,如果调用成功,则回到电路闭合状态。舱壁隔离模式 (Bulkhead Isolation Pattern),顾名思义,该模式像舱壁一样对资源或失败单元进行隔离,如果一个船舱破了进水,只损失一个船舱,其它船舱可以不受影响 。线程隔离 (Thread Isolation) 就是舱壁隔离模式的一个例子,假定一个应用程序 A 调用了 Svc1/Svc2/Svc3 三个服务,且部署 A 的容器一共有 120 个工作线程,采用线程隔离机制,可以给对 Svc1/Svc2/Svc3 的调用各分配 40 个线程,当 Svc2 慢了,给 Svc2 分配的 40 个线程因慢而阻塞并最终耗尽,线程隔离可以保证给 Svc1/Svc3 分配的 80 个线程可以不受影响,如果没有这种隔离机制,当 Svc2 慢的时候,120 个工作线程会很快全部被对 Svc2 的调用吃光,整个应用程序会全部慢下来。限流 (Rate Limiting/Load Shedder),服务总有容量限制,没有限流机制的服务很容易在突发流量 (秒杀,双十一) 时被冲垮。限流通常指对服务限定并发访问量,比如单位时间只允许 100 个并发调用,对超过这个限制的请求要拒绝并回退。回退 (fallback),在熔断或者限流发生的时候,应用程序的后续处理逻辑是什么?回退是系统的弹性恢复能力,常见的处理策略有,直接抛出异常,也称快速失败 (Fail Fast),也可以返回空值或缺省值,还可以返回备份数据,如果主服务熔断了,可以从备份服务获取数据。Netflix 将上述容错模式和最佳实践集成到一个称为 Hystrix 的开源组件中,凡是需要容错的依赖点 (服务,缓存,数据库访问等),开发人员只需要将调用封装在 Hystrix Command 里头,则相关调用就自动置于 Hystrix 的弹性容错保护之下。Hystrix 组件已经在 Netflix 经过多年运维验证,是 Netflix 微服务平台稳定性和弹性的基石,正逐渐被社区接受为标准容错组件。 服务框架微服务化以后,为了让业务开发人员专注于业务逻辑实现,避免冗余和重复劳动,规范研发提升效率,必然要将一些公共关注点推到框架层面。服务框架 (Fig 9) 主要封装公共关注点逻辑,包括: Fig 9, 服务框架 服务注册、发现、负载均衡和健康检查,假定采用进程内 LB 方案,那么服务自注册一般统一做在服务器端框架中,健康检查逻辑由具体业务服务定制,框架层提供调用健康检查逻辑的机制,服务发现和负载均衡则集成在服务客户端框架中。监控日志,框架一方面要记录重要的框架层日志、metrics 和调用链数据,还要将日志、metrics 等接口暴露出来,让业务层能根据需要记录业务日志数据。在运行环境中,所有日志数据一般集中落地到企业后台日志系统,做进一步分析和处理。REST/RPC 和序列化,框架层要支持将业务逻辑以 HTTP/REST 或者 RPC 方式暴露出来,HTTP/REST 是当前主流 API 暴露方式,在性能要求高的场合则可采用 Binary/RPC 方式。针对当前多样化的设备类型 (浏览器、普通 PC、无线设备等),框架层要支持可定制的序列化机制,例如,对浏览器,框架支持输出 Ajax 友好的 JSON 消息格式,而对无线设备上的 Native App,框架支持输出性能高的 Binary 消息格式。配置,除了支持普通配置文件方式的配置,框架层还可集成动态运行时配置,能够在运行时针对不同环境动态调整服务的参数和配置。限流和容错,框架集成限流容错组件,能够在运行时自动限流和容错,保护服务,如果进一步和动态配置相结合,还可以实现动态限流和熔断。管理接口,框架集成管理接口,一方面可以在线查看框架和服务内部状态,同时还可以动态调整内部状态,对调试、监控和管理能提供快速反馈。Spring Boot 微框架的 Actuator 模块就是一个强大的管理接口。统一错误处理,对于框架层和服务的内部异常,如果框架层能够统一处理并记录日志,对服务监控和快速问题定位有很大帮助。安全,安全和访问控制逻辑可以在框架层统一进行封装,可做成插件形式,具体业务服务根据需要加载相关安全插件。文档自动生成,文档的书写和同步一直是一个痛点,框架层如果能支持文档的自动生成和同步,会给使用 API 的开发和测试人员带来极大便利。Swagger 是一种流行 Restful API 的文档方案。当前业界比较成熟的微服务框架有 Netflix 的 Karyon/Ribbon,Spring 的 Spring Boot/Cloud,阿里的 Dubbo 等。 运行期配置管理服务一般有很多依赖配置,例如访问数据库有连接字符串配置,连接池大小和连接超时配置,这些配置在不同环境 (开发 / 测试 / 生产) 一般不同,比如生产环境需要配连接池,而开发测试环境可能不配,另外有些参数配置在运行期可能还要动态调整,例如,运行时根据流量状况动态调整限流和熔断阀值。目前比较常见的做法是搭建一个运行时配置中心支持微服务的动态配置,简化架构如下图 (Fig 10): Fig 10, 服务配置中心 动态配置存放在集中的配置服务器上,用户通过管理界面配置和调整服务配置,具体服务通过定期拉 (Scheduled Pull) 的方式或者服务器推 (Server-side Push) 的方式更新动态配置,拉方式比较可靠,但会有延迟同时有无效网络开销 (假设配置不常更新),服务器推方式能及时更新配置,但是实现较复杂,一般在服务和配置服务器之间要建立长连接。配置中心还要解决配置的版本控制和审计问题,对于大规模服务化环境,配置中心还要考虑分布式和高可用问题。 配置中心比较成熟的开源方案有百度的 Disconf,360 的 QConf,Spring 的 Cloud Config 和阿里的 Diamond 等。 Netflix 的微服务框架Netflix 是一家成功实践微服务架构的互联网公司,几年前,Netflix 就把它的几乎整个微服务框架栈开源贡献给了社区,这些框架和组件包括: Eureka: 服务注册发现框架Zuul: 服务网关Karyon: 服务端框架Ribbon: 客户端框架Hystrix: 服务容错组件Archaius: 服务配置组件Servo: Metrics 组件Blitz4j: 日志组件下图 Fig 11 展示了基于这些组件构建的一个微服务框架体系,来自 recipes-rss。 Fig 11, 基于 Netflix 开源组件的微服务框架 Netflix 的开源框架组件已经在 Netflix 的大规模分布式微服务环境中经过多年的生产实战验证,正逐步被社区接受为构造微服务框架的标准组件。Pivotal 去年推出的 Spring Cloud 开源产品,主要是基于对 Netflix 开源组件的进一步封装,方便 Spring 开发人员构建微服务基础框架。对于一些打算构建微服务框架体系的公司来说,充分利用或参考借鉴 Netflix 的开源微服务组件 (或 Spring Cloud),在此基础上进行必要的企业定制,无疑是通向微服务架构的捷径。 原文地址:https://www.infoq.cn/article/basis-frameworkto-implement-micro-service#anch130564%20%EF%BC%8C

auto_answer 2019-12-02 01:55:22 0 浏览量 回答数 0

问题

健康检查常见问题

行者武松 2019-12-01 21:43:15 3573 浏览量 回答数 0

回答

iperf,具体要纤细直接去看文档, 简单给你列条测试:(TCP和UDP知只是两种传输数据的协议) 1)TCP测试    服务器执行:./iperf -s -i 1 -w 1M '这裏是指定windows如果是 iperf -s则windwos默认大小为8kbyte/s    客户端执行:./iperf -c host -i 1 -w 1M   其中-w表示TCP window size,host需替换成服务器地址。    2)UDP测试    服务器执行:./iperf -u -s    客户端执行:./iperf -u -c 10.255.255.251 -b 900M -i 1 -w 1M -t 60   其中-b表示使用多少带宽,1G的线路你可以使用900M进行测试。 不给分不给力 连接速度是个很怪的概念。我们通常用连接带宽和网络延迟来表达网络连接的状态。 带宽可以用一端建立FTP服务器,另一端下载来测试。网络延时可以用PING命令来测试。 希望能帮到你。 行的。 家庭或小型办公室,如果有两台或更多的计算机,很自然地希望将他们组成一个网络。为方便叙述,以下约定将其称为局域网。在家庭环境下,可用这个网络来共享资源、玩那些需要多人参与的游戏、共用一个调制解调器享用Internet连接等等。办公室中,利用这样的网络,主要解决共享外设如打印机等,此外,办公室局域网也是多人协作工作的基础设施。 别看这样小的网络工程,在过去也是需要专业人员来进行组网配置的。那时,大部分操作的都是手工的,一般的用户都不具备相应的知识和经验。正好属于"高不成低不就"的情况,自然限制了它的发展。Windows XP的出现,打破了这种局面,这依赖它内建有强大的网络支持功能和方便的向导。用户完成物理连接后,运行连接向导,可以自己探测出网络硬件、安装相应的驱动程序或协议,并指导用户,完成所有的配置步骤。 本文介绍两种在Windows XP操作系统下的组网方案,并介绍Windows XP用于局域网中的各种很有特色的功能。 一. 目标: 组成家庭局域网:对外,可以连接Internet,允许局域网内的各个计算机共享连接。对内,可以共享网络资源和设备。 二. 采用什么网络形式? 家庭网中的计算机可能有桌面机或便携机,例如掌上电脑或笔记本机等,也可能出现各种传输介质的接口,所以网络形式上,不宜都采用有线网络,无线接口是必须考虑的。但如果可以明确定位在纯粹的有线网上,也可不设无线接口。所以,这里提供两种方案: 1. 有线与无线混合。 2. 有线。 三. 网络硬件选择 网络适配器(网卡)可采用PCI、PC或PCMCIA接口的卡(后两者多用在便携式机或笔记本机上),Windows XP也支持用USB接口的网络适配器。究竟采用那种适配器,取决于接入网络中的计算机。无论那种适配器,都需要注意与现有计算机的接口以及HUB的协调一致,USB接口的适配器可能适应性更强一些,但对于较旧的计算机,又需要注意它是否支持USB接口。 网络连接线,常用的有同轴电缆和双绞线,这都是大家熟悉的东西,不多解释。究竟采用哪一种,就看你怎么想了。 四. 可采用的网络结构和介质 以太结构:这种结构在办公室或商业用户中最为流行,熟悉的人也很多,技术资料和维护人员也容易找到,所以不多赘述。 电话线连接:这种形式主要的特色是成本很低,物理连接也很简单,适用于大部分的家庭用户。 无线电波:利用电磁波信号来传输信号,可以不用任何连线来进行通讯,并可以在移动中使用。但需要在每台计算机上加装无线适配器,成本高是肯定了。在我国,无线形式用在计算机网络通讯的还较少。在美国,用于无线网络的是一个称为IEEE 802.11b的标准协议,用于计算机近距离网络通讯。在该协议支持下,可达到的网速是11 Mbps。 五. 方案之一 这是一个有线、无线混合方案,具体结构可以参看图1。这个例子中,用4台计算机组成了一个混合网络,PC1是主机,它与外部连接有3个通路: 1. 与Internet接连的调制解调器:用于整个网络的各个计算机共享上网之用。 2. 无线适配器:用于和本网络内的无线设备之间的通讯。 3. HUB:用于"带动"本网络内的下游计算机。 该方案中的PC1、PC2机,必须用Windows XP操作系统,有线部分采用的是以太网结构连接。图中的HPNA是home phoneline network adaptor的缩写,表示家庭电话线网络适配器。图中的PC3和移动计算机,并不要求非使用Windows XP操作系统不可,别的windows版本也行。移动计算机和主机之间的网络连接利用的是无线形式。 如果希望建立混合网络,这种方案已经具备典型的功能,并且不需要花费很大就可以扩充网络规模。 关于连通操作: 图1显示的结构只能表示物理连接关系,物理连接完成后,还需要进行连通操作,网络才可真正投入使用。连通操作包括局域网内部各个计算机之间的连通,和局域网与Internet之间的连通。前者连通建立的步骤如下: 1. 鼠标点击 开始,进入控制面板,点击"Network and Internet Connections网络和Internet连接",选择网络连接( Network Connections),进行下一步。 2. 选择进行"两个或多个LAN的连接" 3. 右键点击一个连接. 4. 确定完成连接任务. 局域网之内的连通操作就完成了。 再说局域网与Internet之间的连通,这种情况主要考虑速度与成本两方面的兼顾。多机上网,最省事的办法是每个机器占据一条独立的电话线,但这不是一般用户能承受起的,资源的浪费也太大。另一个办法,可以使用住宅网关,但这样成本需要增加,不是最佳途径。比较好的方法是使用一个计算机作为主机服务器。这不仅技术上可行,还有很多别的优点,如: ①:由于Windows XP有内建的防火墙,主机介于Internet和终端机之间,可以利用主机的防火墙保护局域网中的分机免受来自Internet的攻击。 ②:主机是"隐匿在" Internet和局域网之间的,充当了网关的脚色,在分机上,用户感觉好像自己是直接连在Interne上一样,察觉不到中间还有主机存在。特别是可以使局域网中的每台计算机同时上网。大大减少了设备投资。 ③:除主机必须使用Windows XP操作系统之外,局域网内的计算机可使用早期的windows版本。 ④:如果局域网中需要使用不同的媒体(例如有线和无线混合),可以利用Windows XP作为过渡的网桥。 ⑤:虽然有网络资源和设备的共享功能,但也可以限制别人对私有文件和数据的访问,特别是将文件存放在主机上的时候,更具有这种优势可用。 ⑥:利用"万能即插即用"功能,可以随时扩充局域网的规模。 六. 方案之二 下面是这种方案的结构示意图。该方案适用于小型办公室。与上一个方案比较,主要是去掉了无线部分,主机与分机之间不采用电话线连接,而是采用了电缆或双绞线连接。所有分机都通过一个HUB与主机连接到Internet上,并可以支持打印机共享。这其实就是最常见的那种局域网的结构。 该方案完成物理连接之后,还需要进行下列操作: 1. 打开网络连接文件夹或找到网络连接的图标. 2. 右键点击"connection to the Internet you want to share(共享Internet连接)"然后再右键点击"Properties(属性)" 3. 选择"Advanced(高级)"任务条。 4. 选择"Allow other networkusers to connect through this computer′s Internet connection(允许另外用户通过这个计算机连接到Internet)"检查框,并选定。 5. 点击 OK.结束操作。 启用Windows XP的防火墙,必须进行设置,不设置是不起作用的。设置过程: 1.打开网络连接文件夹或找到网络连接的图标. 2.右键点击"connection to the Internet you want to share(共享Internet连接)"然后再右键点击"Properties(属性)" 3.选择"Advanced(高级)"任务条。 4. 选择"Protect my computer and network by limitingor preventing access to this computer from the Internet(利用这个计算机限制从Internet进入的访问并保护我的计算机和网络" ,在其下面有一个Internet连接防火墙的检查框,鼠标点击选定。 5. 点击 OK.结束操作。 七. 几点说明 A.主机必须采用Windows XP操作系统,局域网内的计算机可以使用早一些的windows版本,如:windows98、windows ME、windows2000等等。 B.这里提供的是典型的情况,想扩充网络规模基本上可以照此叠加。 C.本文是依据英文测试版本进行的试验,不能保证将来的正式版本。特别是中文正式版本的性能与此完全一致。 参考资料: 创建局域网及配置管理 一.概念: (一).局域网的概念: 局域网做为网络的组成部分,发挥了不可忽视的作用。我们可以用Windows 9X把众多的计算机联系在一起,组成一个局域网,在这个局域网中,我们可以在它们之间共享程序、文档等各种资源,而不必再来回传递软盘;还可以通过网络使多台计算机共享同一硬件,如打印机、调制解调器等;同时我们也可以通过网络使用计算机发送和接收传真,方便快捷而且经济。 局域网是一个范围可大可小、简单的只有2台运行着Windows95的计算机连网(以工作组方式工作),也可以是幅员辽阔的高速ATM网和以太网混合使用、运行多种平台的大型企业。 (二).网络的类型: 1、按网络的地理位置分类 a.局域网(LAN):一般限定在较小的区域内,小于10km的范围,通常采用有线的方式连接起来 b.城域网(MAN):规模局限在一座城市的范围内,10~100km的区域。 c.广域网(WAN):网络跨越国界、洲界,甚至全球范围。 目前局域网和广域网是网络的热点。局域网是组成其他两种类型网络的基础,城域网一般都加入了广域网。广域网的典型代表是Internet网。 (二).硬件指南:网络硬件设备 组成小型局域网的主要硬件设备有网卡、集线器等网络传输介质和中继器、网桥、路由器、网关等网络互连设备。以下主要介绍网卡、集线器等网络传输介质和中继器、网桥、路由器、网关等局域网互连设备。 1.网卡 网卡(Network Interface Card,NIC)也叫网络适配器,是连接计算机与网络的硬件设备。网卡插在计算机或服务器扩展槽中,通过网络线(如双绞线、同轴电缆或光纤)与网络交换数据、共享资源。 Realtek 10/100M,这是我们实例中所使用的网卡 二.组网: 返回顶部 (一).硬件配置:服务器:普通PC机,主板:intel 815,硬盘:迈拓40G,CPU:PIII933,内存:512M ,显示器:ACER。 其他:双绞线一箱(300m),16口HUB一个,RJ45头32个,网卡:Realtek 10/100M 16块。。 由于服务器需要安装两块网卡来用SyGate维护管理,两个网卡的设置请参阅如下的动画。 三.网络维护: 返回顶部 SyGate 4.0是一种支持多用户访问因特网的软件,并且是只通过一台计算机,共享因特网帐号,达到上网的目的。使用SyGate 4.0,若干个用户能同时通过一个小型网络(包括您的笔记本电脑),迅速、快捷、经济地访问因特网。SyGate 4.0能在目前诸多流行的操作系统上运行,譬如:Windows95、Windows98、Windows NT, Windows2000等操作系统;同时,SyGate 4.0还支持多数的因特网连接方式,这包括:调制解调器(模拟线路)拨入、ISDN(综合业务数字网)、线缆调制解调器(Cable Modem)、ADSL以及DirectPC等方式。 SyGate 4.0具有以下优势: 易于安装 SyGate在数分钟之内便可以安装完成,并且通常不需要其他外加的设置。和其他代理服务器软件(proxy server)不同的是,SyGate仅安装Server便可以了。 易于使用 SyGate拥有直观的图形化界面,懂得操作Windows的人员均会操作。SyGate启动后便在后台运行,不需要人工的干预。当SyGate检测到局域网内有上网 要求时,它能自动地连接到因特网上,免去了每次需要手工拨号的烦恼。用户可以不间断地、透明地浏览因特网、收发电子邮件、聊天、使用FTP以及操作其他的小程序等等。局域网内非Windows用户,如Macintosh、Solaris和Linux,均能通过TCP/IP协议上网。 四.Windows 对等网创建与维护 返回顶部 (一).建网软件要求 在一个局域网中,Windows 95、98、NT和2000等操作系统可以并存。当然,即使你的电脑是在DOS下面跑的,也可以实现联网。由于Windows操作系统才是广泛应用的系统,本文不准备讨论DOS联网。 建网硬件要求 要组建电脑网络,无疑需要能将电脑连在一起的硬件设备。最简单的办法是,使用特制的电缆,将两台电脑的并口或者串口联接起来,通过Windows的“直接电缆连接”实现联网。这种联接电缆可以自制,也可以到电脑城购买。其缺点是,只能联接两台电脑,联网距离较短、方式古板,实际应用很不方便,通常要求将一台电脑用作服务器,另外一台用作客户端来实现联网。 但更为普遍采用的是网卡加网线的联网方式。从插槽上分,网卡有ISA和PCI两种;从速度上分,网卡又有10MB和100MB甚至传输速度更高的网卡。要求不高的话,一块PCI 10MB网卡就够用了。 五.疑难解答 返回顶部 (一).网卡安装故障检查方法 如果无法安装网卡驱动程序或安装网卡后无法登录网络,请按下述步骤检查处理: 1.选择“控制面板”/“系统”图标,打开“系统属性”窗口; 2.在“系统属性”窗口的“设备管理”标签的“按类型查看设备列表”中,双击“网络适配器”条目前的“ ”号将其展开,其下应当列出当前网卡; 3.如果“设备管理”标签中没有“网络适配器”条目或当前网卡前有一“X”号,说明系统没能识别网卡,可能产生的原因有网卡驱动程序安装不当、网卡硬件安装不当、网卡硬件故障等等; 参考 LAN(局域网)一词指位于同一区域甚至同一建筑物内的中小型计算机网络,字典上的解释是:将计算机和字处理机等电子办公设备连接在一起构成的办公室或建筑物内的网络系统。相信大多数人都在学校里、当地图书馆或朋友家里。接触过局域网。 随着宽带互联网日益流行,许多人家里都有几台计算机,家庭局域网正在形成规范。通过局域网共享宽带互联网访问可降低成本,不需要每台计算机都连接调制解调器和单独的IP地址。但如何构建一个家庭局域网共享宽带互联网访问呢? 网络带宽表示 网络带宽以兆位秒Mbps测量,通常不用兆字节秒MBps表示。一个字节有八个二进制位组成,多数人都熟悉MBps。当前局域网多为10base-T(10Mbps或1.25MBps)和100base-TX(100Mbps或12.5MBps)的以太网,使用类似标准电话线的RJ-45接口,通过网络电缆把集线器(或路由器、交换器)和计算机连接起来就构成了以太网。 网络布线 开始组建家庭局域网之前,应多少了解一些可用网络电缆的区别。这取决你家中PC机需要安排的位置,因为可能需要在墙上打眼,以穿过五类网络电缆。对家里地方不宽敞的人,这可能是令人畏缩的任务,甚至不太可能。如果你想避免穿墙打眼的麻烦,无线局域网也很方便,但应注意,无线局域网通常速度不够快,花费也高的多。另一种选择可考虑10Mbps电话线套件,利用你现成的电话线在计算机之间传送数据,可购买D-Link,Linksys,3Com和Netgear等公司的产品。不想采用无线局域网的人,可选择五类双绞线网络电缆。如果对电缆不熟悉,下面列出了电子工业协会EIA关于电缆分类的解释。根据电缆的速度和质量,可将电缆分为六类: 一、二类电缆:数据传输速度低于10Mbps(普通电话线) 三类电缆:数据传输速度达16 Mbps 四类电缆:数据传输速度达20 Mbps 五类电缆:数据传输速度达100 Mbps 五类电缆增强:数据传输速度达200 Mbps 六类电缆:数据传输速度达600 Mbps 五类电缆十分普通,连接以太网费用也较低。如果你计划穿墙打眼或使用超过50英尺五类电缆,应购买细电缆,自己动手将RJ-45插头接在电缆两端。注意,别忘了电缆穿过墙之后再接RI-45插头。 连接RJ-45插头 五类电缆连接RJ-45插头并不困难,但需要专用连接工具,可从当地五金商店买一把或从朋友处借用。操作时小心剪掉约1/4英寸电缆外塑料皮,露出电缆里面8根彩色线,注意放入RJ-45连接器里面电缆线的次序: 1、白绿 2、绿 3、白橙 4、兰 5、白兰 6、橙 7、白橙 8、棕 应仔细展开8条彩色编码线,放入RJ-45插孔中,用专用工具压紧。有条件时可用RJ-45测试器验证一下是否连接可靠,以免将来麻烦。 需要的硬件 首先确保每台计算机里都安装了网卡,100base-TX或10base-T网卡,型号、尺寸任意。注意,一般选PCI网卡,各网卡速率应一致。100base-TX网卡数据传输率较高,适合于大量数据传输,如数字电影或其它大的多媒体文件。 组建局域网需要使用集线器,交换器或内置集线器的路由器,集线器只不过用于将你所有的计算机连到局域网上。如果你只有2台计算机并且不打算增加数量,可以用一段电缆直接将2台计算机连起来,缺点是你试图共享宽带互联网访问仍然有麻烦。如果你想多台计算机访问宽带互联网,使用路由器是个好主意,可以选购Netgaer,D-Link和Linksys等著名网络公司的产品。 典型的以太网使用集线器或交换器,两种设备都有单独的连接器,用于将每台计算机连接到局域网上。集线器与交换器的主要差别在于吞吐量,集线器在所有在用的端口间分配吞吐量,因此4端口100base-TX集线器每个在用的端口只有25Mbps吞吐量。交换器更贵些,但允许每个端口全速运行。 假如你准备设置一个只有单个宽带互联网连接的局域网,应确保你的DSL或有线电缆供应商给你提供的是外置调制解调器。多数外置调制解调器通过网卡连接到你的计算机,你可把具有调制解调器的那台计算机设置为路由器,虽然这并不推荐。作为一个例子,你将电话插头接入宽带调制解调器,然后经RJ-45(双绞线)电缆连至集线器/交换器/路由器,从此,你的任一台计算机都可连接到互联网上。 设置Windows网络 确保你准备在局域网上使用的每台计算机,都有足够的五类电缆已连到了集线器或路由器。现在你可能已安装了适当的网卡以及相应的驱动程序,右击“网络邻居”,选择“属性”,可以看到当前已经安装的协议和网卡。要设置网络,应确保所用的网卡已安装了TCP/IP协议。如果你使用的微软操作系统是Windows98或更高版本,网络设置相当简单,Windows网络作为操作系统的基本选项之一应该已经安装了。如果你至少在一台计算机上使用的是Windows Me,你可运行家庭网络向导,将一步步引导你完成设置。记住,你需要使用相同的组名设置你网络中的每台计算机。在Windows95/98中,需要进入网络属性,并确保所有设置为缺省。你的互联网服务供应商ISP可能已经告诉你,如何设置TCP/IP,怎样连接到互联网。你可能是静态IP地址,或是动态IP地址,取决于你的ISP。静态IP地址设置需要的时间稍长一点,如果你想给互联网用户提供服务,如FTP,Web服务器或任何其它服务,静态IP地址是不错的。如果你分配的是IP地址,你的TCP/IP协议属性获得的应是自动选择的IP地址。要检查你的计算机是否已被集线器/路由器分配了一个IP地址,可使用Windows TP配置(进入开始 传输大点的东西,用iostat 1 查看io 来源于网络,供您参考

保持可爱mmm 2019-12-02 02:20:25 0 浏览量 回答数 0

回答

ReFtp4oss(只需配置、不用写代码)完美兼容DiscuzX、phpwind、wordpress等网站 Ftp4oss 官方网址:http://www.ftp4oss.com/   2013年阿里云开发者大赛 决赛20强作品,欢迎大家的支持!非常感谢! Ftp4oss是目前阿里云生态环境中已提供的 最简单的OSS专用的FTP服务;只需10分钟配置、不用写代码,普通站长即可快速地使用上阿里云OSS云存储的一个应用级FTP服务,同时提供安全的FTP快速中转服务,符合OSS云安全理念! 1、上传文件快速无延时、无停顿感(仅受限于用户家庭ADSL的上传瓶颈)! 2、完美兼容DiscuzX、phpwind、wordpress等网站系统(这里有各种演示和试用哦 ),理论上支持所有设计有远程附件的FTP站点, 网站升级再也不用发愁了! 3、不用服务器环境配置、不用看黑界面、不用安装程序……都不用,只需要网站注册账户、三步网站操作获得FTP服务、远程附件配置即可! 4、……还有各种优势等您去帮大家发现! 快来选择Ftp4oss吧!请点击www.ftp4oss.com  详细了解,并使用FTP for OSS服务吧! 注册Ftp4oss账户 三步网站操作,10分钟快速拥有FTP服务: 第一步:输入OSS Access Key和Access Secret; 第二步:选择Bucket或者新创建一个Bucket; 第三步:输入Ftp用户名和Ftp密码; 即可获得FTP服务,立即用FlashXP、FtpRush、FileZilla等客户端软件登录测试(能创建文件夹、上传文件夹、上传文件等) 下图所示: 测试左侧上传一个文件,然后在右侧的上部您是 看不到该文件(但是文件已经成功到OSS了)的(故而您也无法做出删除操作),但是您可以从右下部显示的文件已经成功上传到OSS上了,您可以点击该URL链接来查看! 把Ftp4oss服务应用到您的爱站,详细配置可参考:http://www.ftp4oss.com/help/UsefulSitesHelp.htm —————————————————————————————————————————————————————————— 1、安全的云FTP 考虑到OSS的安全特点,我们特意屏蔽了部分FTP功能,比如默认账户权限只具有创建文件夹、上传文件、删除文件等功能,但是屏蔽了危险的删除文件夹等操作——这些功能已经能满足市面常见网站系统的远程附件要求,同时避免账号泄漏带来的风险; 2、网站用户登录安全:网站的介绍页面采用静态发布,而用户登录、账户管理等交互页面采用SSL的Https安全协议,尽最大努力保护用户的信息安全; 3、关键信息加密:用户口令MD5不可逆加密传输与保存,用户的OSS Access密码采用动态密钥加密后存储,数据库连接字符串加密,即使网站数据库被黑客入侵也无法获得用户的关键信息; 4、高性能缓存转换:针对ECS的磁盘性能低效情况,我们首创缓存转换设计,即在FTP上传文件过程中,直接保存该文件流到缓存中,并不写入系统磁盘,而是缓存转换后通过OSS的SDK直接传到OSS上,实现高性能设计; 注:用户—站长的网站—Ftp4oss—OSS各角色之间的关系,其中红色背景的是Ftp4oss. Ftp4oss程序实现了基本的FTP服务器的功能,监听网站服务器的FTP连接请求,当普通用户向网站提交图片、附件的时候(注1), 网站服务器接收后会及时自动的通过FTP连接、发送到Ftp4oss服务器(注2), Ftp4oss程序即刻应答并接收该文件,并通过OSS的SDK同步到OSS上(注3), 这个过程就是用户上传图片到网站服务器后通过Ftp4oss同步到OSS的过程,整个过程对于用户来说是透明的,由于阿里云内网时延低、带宽在2G以上,所以对于用户上传一张1M的图片多耗费的时间均在1秒以内,其时间等候体验基本是相同的。 当用户访问网站的时候,直接下载了网站服务器的网页内容,该网页的图片、附件则直接从OSS高速下载到用户的浏览器上(注4); ------------------------- ReFtp4oss(只需配置、不用写代码)完美兼容DiscuzX、phpwind、wordpress等网站 我们欢迎阿里云ECS、OSS、RDS等各种为站长网站服务的作品与我们合作,大家互相支持、互相推广,更好的为广大站长们提供一体化解决方案! 首先,我们欢迎OSS的客户端工具与我们合作推广,希望您作品成熟、功能完善,安装部署简单! 因为我们的作品是专门为网站的远程附件服务的,所以特意屏蔽了FTP的部分功能,所以站长无法通过FTP客户端软件完全管理OSS上的文件(即使我们开放了FTP的所有功能,其效率也是如果OSS客户端软件直连OSS的效率高) 所以, 我们欢迎OSS工具的作者与我们合作,您不一定能给我们带来用户,但是我们是肯定可以为您带去用户的!   其它作品作者也欢迎与我们合作推广! http://www.ftp4oss.com/ 首页底部有联系我们的方法! ------------------------- 回4楼mrznz的帖子 非常感谢版主的支持! 您的建议“为附件添加HTTP头信息 Expires与Cache-control的选项”我们会加入下一步的改进计划(如果OSS的C# SDK有支持的话)~~~ ------------------------- 回7楼mayle的帖子 接受版主的批评~~~ 另:我们的产品确实已经上线,我们在提交阿里云审核的时候,已有一个多月的内测了(主要针对的是Disucz和phpwind系统) ------------------------- 回8楼cuinew的帖子 谢谢老兄的支持! ------------------------- 回6楼牛逼王的帖子 谢谢支持~~~ ------------------------- 回12楼cuinew的帖子 嗯,这个问题确实存在,某些逻辑未处理好,我们会改进的,下一个版本将解决这个问题~~~ ------------------------- 回14楼susan20120530的帖子 谢谢管理员的支持!非常感谢! ------------------------- 回23楼mrznz的帖子 您放心,HTTP头的信息添加这两天就放出来了; 本次更新的内容较多,加上这周有3天时间出差到上海参加了华为的云计算世界大会耽搁了点时间 预计您提的建议,明天晚上可以完成,我们测试没问题 后联系你~~~ ------------------------- 回22楼kylin30的帖子 谢谢您的夸奖~~~这让我们有更多的动力把Ftp4oss做的更好~~~ ------------------------- Re第111号作品:Ftp4oss(只需三步网站配置,不需配置环境、不用写代码) 顶起来,希望得到大家的支持哦~~~ ------------------------- 回30楼daigoubu的帖子 确实很方便,感谢支持! ------------------------- 回31楼司徒尔特的帖子 信息不详细者或者无法联系上的,均不能通过审核~~~~ 为了保障服务,初步了解用户站点请求压力情况和避免恶意注册占用资源,才增加了信息审核一关,请放心使用,感谢支持~~~ ------------------------- 回36楼孤独小超的帖子 您好,Ftp4oss目前推出的 FTP云服务和FTP云工具一直都是免费的呀,包括即将推出的Linux版本云工具和OSS客户端等产品也都将是免费的,并且今后也将持续提供这些免费产品来满足大部分用户的使用; FTP云服务的免费的单文件上传大小限制 故意比 FTP云工具的要小,目的就是尽量引导有需要的用户使用FTP云工具,这样可以减轻我们的服务器压力。 部分增值功能预留给收费版本也是为了将来有一点点收入来维持我们的持续研发和运维; 很多用户支持收费说只有收费才能信任我们的产品和服务,但是也有一部分用户反对我们收费,希望提供全功能的免费产品,这对我们真是一个两难的选择啊;这两个极端是实事,我们也理解. ------------------------- 回38楼孤独小超的帖子 FTP云工具链接OSS的方式,是由用户自由设定的; 如果设定由内网通信,则该工具必须运行在对应的ECS服务器上;如果设定外网通信,则运行物理位置不限制; 如您的需求为了省下流量费用,则可以把FTP云工具设置为内网模式,并运行在对应节点的ECS服务器上,那么上传、下载(下载功能在新版本会提供)确实不占用OSS的外网流量; 您可以到基础工具频道下载一个试用看看,谢谢您的支持! ------------------------- 回44楼老残的帖子 您好,感谢支持啊 Linux版本的Ftp4oss云工具快完成了,目前进度在跨Linux版本运行上存在点问题,我们尽快解决; 原来计划年内发布,现在看样子得推迟到年后再发布了~~~ ------------------------- 感谢支持~~~ ------------------------- 回47楼老残的帖子 很可能是你粘贴的IP、用户名或者密码两端存在空格引起的~~~~ 你加我们的技术客服QQ 1487960688 ,人工协助你看一下问题原因~~~ ------------------------- 回51楼老残的帖子 能用了就好 ------------------------- 回 53楼(centaurus) 的帖子 支持Linux系统的版本从月初延迟到月底,不过本周已经开始内测了,计划本周末开始邀请部分Ftp4oss用户一起测试,测试结束后,完善程序后即可发布。有望在3月上旬发布,敬请期待! ------------------------- 回 54楼(疯少) 的帖子 您好,请问您用的是哪一套网站系统?目前使用的是Ftp4oss的哪一个产品(FTP云工具还是FTP云服务?) 如果方便的话,请加我的QQ 1487960688 ,我来帮你定位故障的原因~~~ 感谢您的支持! ------------------------- 回 58楼(yxfwz) 的帖子 您好,您可以加QQ 1487960688 反映注册情况哦 一般我们都是在1--2天之内完成审核工作的。另外,如果你注册的是FTP云工具类型的账户,则无需审核即可直接登录软件了; http://bbs.aliyun.com/read/152856.html ------------------------- 顶起啦,希望大家多多支持! ------------------------- 回 65楼(薇薇luo) 的帖子 你的ftp4oss注册通知邮件里面有客服QQ,你可以联系一下 ------------------------- 2014年6月19日(应该是5月28日才对)更新,请点击:  [分享]发布:支持OSS的FTP云工具稳定版V1.0(Linux版——Ftp4oss出品) ------------------------- 回 71楼(amu) 的帖子 你好,FTP云服务(在线的FTP服务)为了尽量的提高安全性,所以设计上屏蔽了文件列表显示,但是整体功能并不影响网站远程附件的使用; 如果您是人工操作OSS的话,现在你可以有两种选择: 1、选择使用FTP云工具——类似FTP云服务,但是增加了文件列表、下载、删除等功能; 支持OSS的FTP云工具Linux版本 http://market.aliyun.com/product/12-121590002-cmgj000207.html 支持OSS的FTP云工具Windows版本 http://market.aliyun.com/product/12-121590002-cmgj000208.html 2、选择使用OssExplorer——OSS的专用客户端,方便OSS上的文件管理! [分享]OssExplorer(OSS专用客户端)http://bbs.aliyun.com/read/161263.html ------------------------- 回 75楼(nydalu) 的帖子 您好,可以联系我们技术客服的QQ,以便协助你找一下原因~~~ 这个是我们刚刚通过Ftp4oss上传了png图片的一个效果,请你查看 http://ftp4oss.oss-cn-hangzhou.aliyuncs.com/2011121417032133245.png 我们这边测试是正常的哦 ------------------------- 回 77楼(cbiz100) 的帖子 您好,近期阿里云ECS增加了很多Linux版本,我们还未做兼容性测试; 详细的系统支持请见介绍: http://market.aliyun.com/product/12-121590002-cmgj000207.html?spm=0.0.0.0.cceFhh#user_comments 1、你这里提到的是32位系统,请你下载32位版本自行测试看看,不一定兼容;(下载和配置地址 http://bbs.aliyun.com/read/154294.html?spm=5176.7189909.0.0.tuCDe9) 2、目前的FTP云工具只能支持一个账号而已(下一个升级版本有考虑到这个多用户的支持); 3、近期还不能支持七牛。 您可以更简单的选择我们的FTP云服务,对系统不作要求,直接使用我们提供的在线FTP云服务。 ------------------------- [分享]★★★   OssExplorerOSS客户端正式发布了——Ftp4oss出品 ------------------------- 回 83楼(云通) 的帖子 你好,你说的Linux版本是哪个工具呢? ------------------------- Re:★★CT团队出品:Ftp4oss阿里云OSS最好用的FTP云工具、客户端和文件同步 .. www.ftp4oss.com 现更改为 www.ct.cc   "Ftp4oss团队"现更名为"CT团队" ------------------------- Re:★★CT团队出品:Ftp4oss阿里云OSS最好用的FTP云工具、客户端和文件同步 .. 支持支持! ------------------------- 回 87楼(晓庄) 的帖子 当然可以修改产品类型了,我们的帐号注册后通行我们开发的所有产品~~~ ------------------------- 回 89楼(晓庄) 的帖子 估计是您的注册信息缺失太多,导致未能通过审核,虽然不影响您的工具类产品的使用,但是无法登陆网站; 您可以联系我们的QQ技术(到www.ct.cc获取联系方法)协助您处理,审核通过后即可登陆网站更新类型了; ------------------------- 回 90楼(itdashen) 的帖子 联系我们的QQ技术(到www.ct.cc获取联系方法)协助您查看原因! ------------------------- Re:★★CT团队出品:Ftp4oss阿里云OSS最好用的FTP云工具、客户端和文件同步 .. 不同的工具采用不同的SDK,也有直接自己封装API的; ------------------------- 回 96楼(bigoo) 的帖子 如果你的文件夹555下有图片的话,那么你直接FTP上传图片或者整个文件夹的话,肯定是没有问题的,这个只是最最基本的功能而已! 根据你的描述,很可能你连接的FTP很可能只是你自己的传统FTP服务器,而不是我们提供的Ftp4oss~~ 建议发个FTP连接IP的截图看看,如有需要,也可以请联系技术QQ 1020736080 协助你看看~~~ ------------------------- 回 98楼(bigoo) 的帖子 你的这么多截图都看不到重点的交互,你的楼上也给你留了协助联系方式,不过你也没联系,我们也联系不到你,呵呵;论坛帖子留言是反馈问题,不是解决问题的最佳方式~~~ 我们的Ftp4oss一年多了用户反映兼容性还是不错的,期待你能和我们联系,可以和你一起看看你那边有什么特殊的情况; ------------------------- 回 101楼(晓庄) 的帖子 你好,FTP云服务默认给的是10M的全局大小;而FTP云工具默认是2M,采用Ftp4oss帐号登陆则默认为10M,还可以免费授权大于10M的上传; ------------------------- Re:★★CT团队出品:Ftp4oss阿里云OSS最好用的FTP云工具、客户端和文件同步 .. 楼上用户已联系技术客服沟通完毕; 说明:现有的FTP云服务支持10M以下的文件上传,需要传输大小10M的文件,需要选用FTP云工具;

ftp4oss 2019-12-02 02:03:28 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站