• 关于

    本地小程序接口api方案

    的搜索结果

回答

虽然跨平台的移动APP开发有利有弊。但从业务初创的角度来看,优点应该是大于缺点的。而且,随着对跨平台移动应用需求的不断增长,现在可用的工具和框架数量也已经很可观了。 但选择过多会令人头疼,这就是为什么我们只关注最突出的跨平台移动开发框架的原因:React Native, Flutter, NativeScript, 和Xamarin。 为了让你更深入地了解是什么使这些工具成为2020年软件开发的可选选项,我们将根据以下标准对它们进行打分:社区支持、基于的编程语言、代码可重用性、性能、界面以及使用它们构建的重要应用程序。 React Native Reaction Native是Facebook于2015年发布的开源、跨平台的应用开发框架。作为2013年举办的一场内部黑客马拉松的产物,它已经成为最受欢迎的原生App开发替代方案之一,拥有2043名GitHub贡献者,获得了超过82900 GitHub标星。不断增长的社区认知度使得找到一支可靠且经验丰富的开发团队来承接你的项目变得相对容易。 Learn Once and Write Anywhere 基于React.JS,React Native利用JavaScript(根据2019年Stack Overflow的调查,JavaScript成为了最受欢迎的编程语言),为Android和iOS用户提供真正原生的应用外观和体验。另外,使该框架脱颖而出的是,如果你需要,React Native允许你使用Java、Objective-C或SWIFT编写部分原生模块来顺利处理复杂的操作,如视频播放或图像编辑。 虽然这些组件不能在不同的平台之间共享,并且需要开发人员做更多的工作,但多达90%的React Native代码是可以重用的。很好地表明该框架的座右铭不是“Write Once, Use Anywhere”,而是“learn once, write anywhere”。 就GUI而言,React Native可以提供接近原生的用户体验,这要归功于它使用了Android和iOS的本地控制器。它还使用带有UI元素的ReactJS库,这有助于加快UI设计过程。在开发移动应用程序时,使此框架值得考虑的另一个原因是,它可用在不丢失应用程序状态的情况下对UI进行更改。 另一个使React Native成为2020年跨平台移动开发框架的首选之一,是因为持续的更新,例如近期的版本 0.60 和 0.61 : 多项辅助功能改进。 更清晰、更人性化的开始屏幕。 快速刷新,融合了实时和热重新加载,从而显著加快了开发进程。 如上的Release Note只是React Native适应不断变化的需求其中一个很小的样本。 2020年值得考虑的第二个框架是Flutter。它在Google I/O 2017上宣布,并于2018年发布,对于跨平台的世界来说,它现在仍然是一个“新人”。但尽管如此,它已经获得了超过80500 GitHub星标和绝大多数工程师将其称为2019年Stack Overflow调查中最受欢迎的三个框架之一,Flutter无疑是一股不可忽视的力量。 Dart是如何使Flutter变得独一无二的 Flutter 背后的编程语言是 Dart,谷歌称之为"客户端优化",适合在任何平台上"快速构建应用程序"。它于 2011 年推出,是一种响应式面向对象的语言,被开发者认为相对容易学习,其中原因有二:第一,语法上它借鉴了C/C++ 和 Java; 第二,在官方网站上,您可以找到内容广泛且相当简单的文档。值得一提的是,Dart 附带了大量Flutter 兼容软件包的软件包,允许您使应用程序更加复杂。 lutter的一个主要优势是,它的性能比本文提到的任何其他跨平台移动开发框架都要好。这归功于Dart的编译器和Flutter拥有自己的一套小部件。结果是它能更快、更直接地与平台直接通信,而不需要JavaScript桥(例如,Reaction Native就是这种情况)。说到小部件:通过Flutter的“UI-as-a-code”方法,它们只用DART编写,这就提高了代码的可重用性。 效率与用户体验和界面密不可分。如前所述,Flutter不依赖于一组原生组件,而是利用可视化、结构化、平台性和交互式小部件进行UI的设计,所有这些都由框架的图形引擎呈现。更重要的是,Flutter留下了很大的定制空间,如果你想要设计一个很完美的UI,它是个很好的选择。 说到Flutter的更新,最新的稳定版本是在12月12日发布的,根据官方发布说明,它合并了来自188个贡献者的近2000个pull。例如,版本1.12.13中包括的改进: 重大的API变动。 新功能,例如SliverOpacity小部件和SliverAnimatedList。 修复了崩溃和性能问题。 Beta版中的Web支持。 这不是一个完整的清单,因为Flutter的目标是让每年发布的四个版本中的每一个版本都能为框架的可用性提升一个台阶。 Flutter是一个年轻的跨平台移动应用程序开发框架,所以它没有像React Native受到众多的大公司青睐也是不足为奇的。然而,这并不意味着它不好,截至2019年12月,它也为阿里巴巴、谷歌广告、Groupon等众多公司和业务所采用。 NativeScript 如果你要开始开发你的产品,“React Native”和“Flutter”绝不是唯一的解决方案。在 2020 年初,适合您的企业的替代框架也可能是 NativeScript。 这个开源框架于2015年3月公开发布,并迅速成为广受欢迎的解决方案。例如,在发布后的短短两个月内,它就获得了3000颗GitHub星标,并在Twitter上吸引了1500多名粉丝的关注。到今天为止,市场上已有超过700个插件可供选择。 在使用NativeScript构建跨平台应用程序时,开发人员首先用JavaScript及其超集TypeScript编写代码。然后,将代码库编译成各自平台原生的编程语言。 另外值得一提的是,使用 NativeScript 的开发人员也可以使用第三方库(CocoaPods 和 Android SDK),而无需包装。 与React Native类似,NativeScript允许访问Android和iOS原生API,这对跨平台应用程序有明显的积极影响。然而,不同之处在于,前者需要构建桥接API,而后者(用Progress首席开发者倡导者TJ VanToll的话说是“将所有iOS和Android API注入JavaScript虚拟机”)。与Facebook框架的另一个相似之处在于代码重用,在这两种情况下都可以达到90%。 Xamarin Xamarin开源框架创建于2011年,这使它成为了这个列表中最“古老“的框架,但直到五年前它被微软收购时,它才获得了发展势头。截至今天,它号称拥有超过6万名贡献者的社区。 从技术上讲,要用Xamarin构建跨平台的移动应用,需要很好地掌握.NET和C#两种技术,前者是使用多种语言(包括C#编程语言)、编辑器和库的开发平台。Xamarin用一组工具补充了上述平台,这些工具有助于构建跨平台应用程序,例如库、编辑器扩展和XAML。第二种技术是C#,这是一种面向对象的编程语言,它被认为比JavaScript学习起来稍难。Xamarin利用这种编程语言编写整个应用程序,从后端到原生API,再到业务逻辑。 Xamarin.Native和Xamarin.Forms Xamarin与其他框架的不同之处在于,它提供了两种编译跨平台移动应用的方式:Xamarin Native(也称为Xamarin.Android/iOS)和Xamarin.Forms。前一种方法优先考虑共享业务逻辑,并通过使用本机接口控件实现近乎本机的性能。 后者侧重于共享代码,而不是业务原理,这一方面会导致代码重用比例增加(使用Xamarin,开发人员可以重用高达96%的C#代码),但另一方面这样会降低代码性能。 您可能已经注意到,跨平台移动应用程序的性能和GUI密切相关,所以如果我说Xamarin构建应用程序的两种方法对界面的最终外观有很大影响,我可能不会感到惊讶。 Xamarin.Android/iOS允许开发人员使用原生控件和布局,而Xamarin.Forms基于标准UI元素,允许从单个API设计应用程序,但如果你需要更完美的原生UI,则可能还不够。 2020年跨平台应用程序开发还值得考虑吗? 不论如何,跨平台确实是一个值得考虑和极具前景的方向,特别是我们上面提到的 “React Native”和“Flutter”。 前者是一个成熟而稳定的框架,利用了最流行的编程语言之一,并拥有成熟的大型开发人员社区。后者是一个快速发展的技术,尽管它比React Native年轻的多,它也已经赢得了世界各地许多开发人员的青睐。 但无论您选择的是“React Native”、“Flutter”还是任何其他框架,跨平台方法都一定会为您节省时间和金钱,同时能为你最大限度地扩大市场覆盖范围。 最后,值不值得考虑,最终还是取决于你的业务目标、预算和时限。 来源;:葡萄城官网

问问小秘 2020-04-15 13:30:17 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 发送访问OSS的请求 您可以直接使用OSS提供的RESTful API接口访问或者使用对API接口进行完整封装的SDK开发包。而每一次向OSS的请求根据当前Bucket权限和操作不同要求用户进行身份验证或者直接匿名访问。对OSS的资源访问的分类如下: 按访问者的角色可分为拥有者访问和第三方用户访问。这里的拥有者指的是Bucket的Owner,也称为开发者。第三方用户是指访问Bucket里资源的用户。 按访问者的身份信息可分为匿名访问和带签名访问。对于OSS来说,如果请求中没有携带任何和身份相关的信息即为匿名访问。带签名访问指的是按照OSS API文档中规定的在请求头部或者在请求URL中携带签名的相关信息。 AccessKey 类型 目前访问 OSS 使用的 AK(AccessKey)有三种类型,具体如下: 阿里云账号AccessKey 阿里云账号AK特指Bucket拥有者的AK,每个阿里云账号提供的AccessKey对拥有的资源有完全的权限。每个阿里云账号能够同时拥有不超过5个active或者inactive的AK对(AccessKeyId和AccessKeySecret)。 用户可以登录AccessKey管理控制台,申请新增或删除AK对。 每个AK对都有active/inactive两种状态。 Active 表明用户的 AK 处于激活状态,可以在身份验证的时候使用。 Inactive 表明用户的 AK 处于非激活状态,不能在身份验证的时候使用。 说明 请避免直接使用阿里云账户的 AccessKey。 RAM子账号AccessKey RAM (Resource Access Management) 是阿里云提供的资源访问控制服务。RAM账号AK指的是通过RAM被授权的AK。这组AK只能按照RAM定义的规则去访问Bucket里的资源。通过RAM,您可以集中管理您的用户(比如员工、系统或应用程序),以及控制用户可以访问您名下哪些资源的权限。比如能够限制您的用户只拥有对某一个Bucket的读权限。子账号是从属于主账号的,并且这些账号下不能拥有实际的任何资源,所有资源都属于主账号。 STS账号AccessKey STS(Security Token Service)是阿里云提供的临时访问凭证服务。STS账号AK指的是通过STS颁发的AK。这组AK只能按照STS定义的规则去访问Bucket里的资源。 身份验证具体实现 目前主要有三种身份验证方式: AK验证 RAM验证 STS验证 当用户以个人身份向OSS发送请求时,其身份验证的实现如下: 用户将发送的请求按照OSS指定的格式生成签名字符串。 用户使用AccessKeySecret对签名字符串进行加密产生验证码。 OSS收到请求以后,通过AccessKeyId找到对应的AccessKeySecret,以同样的方法提取签名字符串和验证码。 如果计算出来的验证码和提供的一样即认为该请求是有效的。 否则,OSS将拒绝处理这次请求,并返回HTTP 403错误。 对于用户来说可以直接使用OSS提供的SDK,配合不同类型的AccessKey即可实现不同的身份验证。 权限控制 针对存放在Bucket的Object的访问,OSS提供了多种权限控制,主要有: Bucket级别权限 Object级别权限 账号级别权限(RAM) 临时账号权限(STS) Bucket级别权限 Bucket权限类型 OSS提供ACL(Access Control List)权限控制方法,OSS ACL提供Bucket级别的权限访问控制,Bucket目前有三种访问权限:public-read-write,public-read和private,它们的含义如下: 权限值 中文名称 权限对访问者的限制 public-read-write 公共读写 任何人(包括匿名访问)都可以对该Bucket中的Object进行读/写/删除操作;所有这些操作产生的费用由该Bucket的Owner承担,请慎用该权限。 public-read 公共读,私有写 只有该Bucket的Owner或者授权对象可以对存放在其中的Object进行写/删除操作;任何人(包括匿名访问)可以对Object进行读操作。 private 私有读写 只有该Bucket的Owner或者授权对象可以对存放在其中的Object进行读/写/删除操作;其他人在未经授权的情况下无法访问该Bucket内的Object。 Bucket权限设定和读取方法 功能使用参考: API:Put BucketACL SDK:Java SDK-设置Bucket ACL 控制台:创建Bucket权限设置 API:Get BucketACL SDK:Java SDK-获取Bucket ACL Object级别权限 Object权限类型 OSS ACL也提供Object级别的权限访问控制。目前Object有四种访问权限:private, public-read, public-read-write, default。Put Object ACL操作通过Put请求中的“x-oss-object-acl”头来设置,这个操作只有Bucket Owner有权限执行。 权限值 中文名称 权限对访问者的限制 public-read-write 公共读写 该ACL表明某个Object是公共读写资源,即所有用户拥有对该Object的读写权限。 public-read 公共读,私有写 该ACL表明某个Object是公共读资源,即非Object Owner只有该Object的读权限,而Object Owner拥有该Object的读写权限。 private 私有读写 该ACL表明某个Object是私有资源,即只有该Object的Owner拥有该Object的读写权限,其他的用户没有权限操作该Object。 default 默认权限 该ACL表明某个Object是遵循Bucket读写权限的资源,即Bucket是什么权限,Object就是什么权限。 说明 如果没有设置Object的权限,即Object的ACL为default,Object的权限和Bucket权限一致。 如果设置了Object的权限,Object的权限大于Bucket权限。举个例子,如果设置了Object的权限是public-read,无论Bucket是什么权限,该Object都可以被身份验证访问和匿名访问。 Object权限设定和读取方法 功能使用参考: API:Put Object ACL SDK:Java SDK-ObjectACL 中设定Object ACL API:Get Object ACL SDK:Java SDK-ObjectACL 中读取Object ACL 账号级别权限(RAM) 使用场景 如果您购买了云资源,您的组织里有多个用户需要使用这些云资源,这些用户只能共享使用您的云账号AccessKey。这里有两个问题: 您的密钥由多人共享,泄露的风险很高。 您无法控制特定用户能访问哪些资源(比如Bucket)的权限。 解决方法:在您的阿里云账号下面,通过RAM可以创建具有自己AccessKey的子用户。您的阿里云账号被称为主账号,创建出来的账号被称为子账号,使用子账号的AccessKey只能使用主账号授权的操作和资源。 具体实现 有关RAM详情,请参考RAM用户手册。 对于授权中需要的Policy的配置方式可以参考本章最后一节:RAM和STS授权策略(Policy)配置。 临时账号权限(STS) 使用场景 对于您本地身份系统所管理的用户,比如您的App的用户、您的企业本地账号、第三方App,也有直接访问OSS资源的可能,将这部分用户称为联盟用户。此外,用户还可以是您创建的能访问您的阿里云资源的应用程序。 对于这部分联盟用户,通过阿里云STS (Security Token Service) 服务为阿里云账号(或RAM用户)提供短期访问权限管理。您不需要透露云账号(或RAM用户)的长期密钥(如登录密码、AccessKey),只需要生成一个短期访问凭证给联盟用户使用即可。这个凭证的访问权限及有效期限都可以由您自定义。您不需要关心权限撤销问题,访问凭证过期后会自动失效。 用户通过STS生成的凭证包括安全令牌(SecurityToken)、临时访问密钥(AccessKeyId, AccessKeySecret)。使用AccessKey方法与您在使用阿里云账户或RAM用户AccessKey发送请求时的方法相同。此外还需要注意的是在每个向OSS发送的请求中必须携带安全令牌。 具体实现 STS安全令牌、角色管理和使用相关内容详情,请参考RAM用户指南中的角色管理。关键是调用STS服务接口AssumeRole来获取有效访问凭证即可,也可以直接使用STS SDK来调用该方法。 RAM和STS应用场景实践 对于不同的应用场景,涉及到的访问身份验证方式可能存在差异。下面以几种典型的应用场景来说明访问身份验证中几种使用方式。 以一个移动App举例。假设您是一个移动App开发者,打算使用阿里云OSS服务来保存App的终端用户数据,并且要保证每个App用户之间的数据隔离,防止一个App用户获取到其它App用户的数据。 方式一:使用AppServer来做数据中转和数据隔离如上图所示,您需要开发一个AppServer。只有AppServer能访问云服务,ClientApp的每次读写数据都需要通过AppServer,AppServer来保证不同用户数据的隔离访问。 对于该种使用方式,使用阿里云账号或者RAM账号提供的密钥来进行签名验证访问。建议您尽量不要直接使用阿里云账号(主账号)的密钥访问OSS,避免出现安全问题。 方式二:使用STS让用户直接访问OSS STS方案描述如下图所示:方案的详细描述如下: App用户登录。App用户和云账号无关,它是App的终端用户,AppServer支持App用户登录。对于每个有效的App用户来说,需要AppServer能定义出每个App用户的最小访问权限。 AppServer请求STS服务获取一个安全令牌(SecurityToken)。在调用STS之前,AppServer需要确定App用户的最小访问权限(用Policy语法描述)以及授权的过期时间。然后通过扮演角色(AssumeRole)来获取一个代表角色身份的安全令牌。 STS返回给AppServer一个有效的访问凭证,包括一个安全令牌(SecurityToken)、临时访问密钥(AccessKeyId, AccessKeySecret)以及过期时间。 AppServer将访问凭证返回给ClientApp。ClientApp可以缓存这个凭证。当凭证失效时,ClientApp需要向AppServer申请新的有效访问凭证。比如,访问凭证有效期为1小时,那么ClientApp可以每30分钟向AppServer请求更新访问凭证。 ClientApp使用本地缓存的访问凭证去请求Aliyun Service API。云服务会感知STS访问凭证,并会依赖STS服务来验证访问凭证,正确响应用户请求。 RAM和STS授权策略(Policy)配置 对于RAM或者STS授权中使用Policy,详细规则如下。 示例 先看下面的一个Policy示例: { "Version": "1", "Statement": [ { "Action": [ "oss:GetBucketAcl", "oss:ListObjects" ], "Resource": [ "acs:oss:*:1775305056529849:mybucket" ], "Effect": "Allow", "Condition": { "StringEquals": { "acs:UserAgent": "java-sdk", "oss:Prefix": "foo" }, "IpAddress": { "acs:SourceIp": "192.168.0.1" } } }, { "Action": [ "oss:PutObject", "oss:GetObject", "oss:DeleteObject" ], "Resource": [ "acs:oss:*:1775305056529849:mybucket/file*" ], "Effect": "Allow", "Condition": { "IpAddress": { "acs:SourceIp": "192.168.0.1" } } } ] } 这是一个授权的Policy,用户用这样的一个Policy通过RAM或STS服务向其他用户授权。Policy当中有一个Statement(一条Policy当中可以有多条Statement)。Statement里面规定了相应的Action、Resource、Effect和Condition。 这条Policy把用户自己名下的mybucket和mybucket/file*这些资源授权给相应的用户,并且支持GetBucketAcl、GetBucket、PutObject、GetObject和DeleteObject这几种操作。Condition中的条件表示UserAgent为java-sdk,源IP为192.168.0.1的时候鉴权才能通过,被授权的用户才能访问相关的资源。Prefix这个Condition是在GetBucket(ListObjects)的时候起作用的,关于这个字段的解释详见OSS的API文档。 配置细则 Version Version定义了Policy的版本,本文档中sw2q的配置方式,设置为1。 Statement 通过Statement描述授权语义,其中可以根据业务场景包含多条语义,每条包含对Action、Effect、Resource和Condition的描述。每次请求系统会逐条依次匹配检查,所有匹配成功的Statement会根据Effect的设置不同分为通过(Allow)、禁止(Deny),其中禁止(Deny)的优先。如果匹配成功的都为通过,该条请求即鉴权通过。如果匹配成功有一条禁止,或者没有任何条目匹配成功,该条请求被禁止访问。 Action Action分为三大类:Service级别操作,对应的是GetService操作,用来列出所有属于该用户的Bucket列表。 Bucket级别操作,对应类似于oss:PutBucketAcl、oss:GetBucketLocation之类的操作,操作的对象是Bucket,它们的名称和相应的接口名称一一对应。 Object级别操作,分为oss:GetObject、oss:PutObject、oss:DeleteObject和oss:AbortMultipartUpload,操作对象是Object。 如想授权某一类的Object的操作,可以选择这几种的一种或几种。另外,所有的Action前面都必须加上oss:,如上面例子所示。Action是一个列表,可以有多个Action。具体的Action和API接口的对应关系如下: Service级别 API Action GetService(ListBuckets) oss:ListBuckets Bucket级别 API Action PutBucket oss:PutBucket GetBucket(ListObjects) oss:ListObjects PutBucketAcl oss:PutBucketAcl DeleteBucket oss:DeleteBucket GetBucketLocation oss:GetBucketLocation GetBucketAcl oss:GetBucketAcl GetBucketLogging oss:GetBucketLogging PutBucketLogging oss:PutBucketLogging DeleteBucketLogging oss:DeleteBucketLogging GetBucketWebsite oss:GetBucketWebsite PutBucketWebsite oss:PutBucketWebsite DeleteBucketWebsite oss:DeleteBucketWebsite GetBucketReferer oss:GetBucketReferer PutBucketReferer oss:PutBucketReferer GetBucketLifecycle oss:GetBucketLifecycle PutBucketLifecycle oss:PutBucketLifecycle DeleteBucketLifecycle oss:DeleteBucketLifecycle ListMultipartUploads oss:ListMultipartUploads PutBucketCors oss:PutBucketCors GetBucketCors oss:GetBucketCors DeleteBucketCors oss:DeleteBucketCors PutBucketReplication oss:PutBucketReplication GetBucketReplication oss:GetBucketReplication DeleteBucketReplication oss:DeleteBucketReplication GetBucketReplicationLocation oss:GetBucketReplicationLocation GetBucketReplicationProgress oss:GetBucketReplicationProgress Object级别 API Action GetObject oss:GetObject HeadObject oss:GetObject PutObject oss:PutObject PostObject oss:PutObject InitiateMultipartUpload oss:PutObject UploadPart oss:PutObject CompleteMultipart oss:PutObject DeleteObject oss:DeleteObject DeleteMultipartObjects oss:DeleteObject AbortMultipartUpload oss:AbortMultipartUpload ListParts oss:ListParts CopyObject oss:GetObject,oss:PutObject UploadPartCopy oss:GetObject,oss:PutObject AppendObject oss:PutObject GetObjectAcl oss:GetObjectAcl PutObjectAcl oss:PutObjectAcl Resource Resource指代的是OSS上面的某个具体的资源或者某些资源(支持*通配),resource的规则是acs:oss:{region}:{bucket_owner}:{bucket_name}/{object_name}。对于所有Bucket级别的操作来说不需要最后的斜杠和{object_name},即acs:oss:{region}:{bucket_owner}:{bucket_name}。Resource也是一个列表,可以有多个Resource。其中的region字段暂时不做支持,设置为*。 Effect Effect代表本条的Statement的授权的结果,分为Allow和Deny,分别指代通过和禁止。多条Statement同时匹配成功时,禁止(Deny)的优先级更高。 例如,期望禁止用户对某一目录进行删除,但对于其他文件有全部权限: { "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:*" ], "Resource": [ "acs:oss:*:*:bucketname" ] }, { "Effect": "Deny", "Action": [ "oss:DeleteObject" ], "Resource": [ "acs:oss:*:*:bucketname/index/*", ] } ] } Condition Condition代表Policy授权的一些条件,上面的示例里面可以设置对于acs:UserAgent的检查、acs:SourceIp的检查、还有oss:Prefix这项用来在GetBucket的时候对资源进行限制。 OSS支持的Condition如下: condition 功能 合法取值 acs:SourceIp 指定ip网段 普通的ip,支持*通配 acs:UserAgent 指定http useragent头 字符串 acs:CurrentTime 指定合法的访问时间 ISO8601格式 acs:SecureTransport 是否是https协议 “true”或者”false” oss:Prefix 用作ListObjects时的prefix 合法的object name 更多示例 针对具体场景更多的授权策略配置示例,可以参考教程示例:控制存储空间和文件夹的访问权限和OSS授权常见问题。 Policy在线图形化便捷配置工具,请单击这里。 最佳实践 RAM和STS使用指南

2019-12-01 23:12:47 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 发送访问OSS的请求 您可以直接使用OSS提供的RESTful API接口访问或者使用对API接口进行完整封装的SDK开发包。而每一次向OSS的请求根据当前Bucket权限和操作不同要求用户进行身份验证或者直接匿名访问。对OSS的资源访问的分类如下: 按访问者的角色可分为拥有者访问和第三方用户访问。这里的拥有者指的是Bucket的Owner,也称为开发者。第三方用户是指访问Bucket里资源的用户。 按访问者的身份信息可分为匿名访问和带签名访问。对于OSS来说,如果请求中没有携带任何和身份相关的信息即为匿名访问。带签名访问指的是按照OSS API文档中规定的在请求头部或者在请求URL中携带签名的相关信息。 AccessKey 类型 目前访问 OSS 使用的 AK(AccessKey)有三种类型,具体如下: 阿里云账号AccessKey 阿里云账号AK特指Bucket拥有者的AK,每个阿里云账号提供的AccessKey对拥有的资源有完全的权限。每个阿里云账号能够同时拥有不超过5个active或者inactive的AK对(AccessKeyId和AccessKeySecret)。 用户可以登录AccessKey管理控制台,申请新增或删除AK对。 每个AK对都有active/inactive两种状态。 Active 表明用户的 AK 处于激活状态,可以在身份验证的时候使用。 Inactive 表明用户的 AK 处于非激活状态,不能在身份验证的时候使用。 说明 请避免直接使用阿里云账户的 AccessKey。 RAM子账号AccessKey RAM (Resource Access Management) 是阿里云提供的资源访问控制服务。RAM账号AK指的是通过RAM被授权的AK。这组AK只能按照RAM定义的规则去访问Bucket里的资源。通过RAM,您可以集中管理您的用户(比如员工、系统或应用程序),以及控制用户可以访问您名下哪些资源的权限。比如能够限制您的用户只拥有对某一个Bucket的读权限。子账号是从属于主账号的,并且这些账号下不能拥有实际的任何资源,所有资源都属于主账号。 STS账号AccessKey STS(Security Token Service)是阿里云提供的临时访问凭证服务。STS账号AK指的是通过STS颁发的AK。这组AK只能按照STS定义的规则去访问Bucket里的资源。 身份验证具体实现 目前主要有三种身份验证方式: AK验证 RAM验证 STS验证 当用户以个人身份向OSS发送请求时,其身份验证的实现如下: 用户将发送的请求按照OSS指定的格式生成签名字符串。 用户使用AccessKeySecret对签名字符串进行加密产生验证码。 OSS收到请求以后,通过AccessKeyId找到对应的AccessKeySecret,以同样的方法提取签名字符串和验证码。 如果计算出来的验证码和提供的一样即认为该请求是有效的。 否则,OSS将拒绝处理这次请求,并返回HTTP 403错误。 对于用户来说可以直接使用OSS提供的SDK,配合不同类型的AccessKey即可实现不同的身份验证。 权限控制 针对存放在Bucket的Object的访问,OSS提供了多种权限控制,主要有: Bucket级别权限 Object级别权限 账号级别权限(RAM) 临时账号权限(STS) Bucket级别权限 Bucket权限类型 OSS提供ACL(Access Control List)权限控制方法,OSS ACL提供Bucket级别的权限访问控制,Bucket目前有三种访问权限:public-read-write,public-read和private,它们的含义如下: 权限值 中文名称 权限对访问者的限制 public-read-write 公共读写 任何人(包括匿名访问)都可以对该Bucket中的Object进行读/写/删除操作;所有这些操作产生的费用由该Bucket的Owner承担,请慎用该权限。 public-read 公共读,私有写 只有该Bucket的Owner或者授权对象可以对存放在其中的Object进行写/删除操作;任何人(包括匿名访问)可以对Object进行读操作。 private 私有读写 只有该Bucket的Owner或者授权对象可以对存放在其中的Object进行读/写/删除操作;其他人在未经授权的情况下无法访问该Bucket内的Object。 Bucket权限设定和读取方法 功能使用参考: API:Put BucketACL SDK:Java SDK-设置Bucket ACL 控制台:创建Bucket权限设置 API:Get BucketACL SDK:Java SDK-获取Bucket ACL Object级别权限 Object权限类型 OSS ACL也提供Object级别的权限访问控制。目前Object有四种访问权限:private, public-read, public-read-write, default。Put Object ACL操作通过Put请求中的“x-oss-object-acl”头来设置,这个操作只有Bucket Owner有权限执行。 权限值 中文名称 权限对访问者的限制 public-read-write 公共读写 该ACL表明某个Object是公共读写资源,即所有用户拥有对该Object的读写权限。 public-read 公共读,私有写 该ACL表明某个Object是公共读资源,即非Object Owner只有该Object的读权限,而Object Owner拥有该Object的读写权限。 private 私有读写 该ACL表明某个Object是私有资源,即只有该Object的Owner拥有该Object的读写权限,其他的用户没有权限操作该Object。 default 默认权限 该ACL表明某个Object是遵循Bucket读写权限的资源,即Bucket是什么权限,Object就是什么权限。 说明 如果没有设置Object的权限,即Object的ACL为default,Object的权限和Bucket权限一致。 如果设置了Object的权限,Object的权限大于Bucket权限。举个例子,如果设置了Object的权限是public-read,无论Bucket是什么权限,该Object都可以被身份验证访问和匿名访问。 Object权限设定和读取方法 功能使用参考: API:Put Object ACL SDK:Java SDK-ObjectACL 中设定Object ACL API:Get Object ACL SDK:Java SDK-ObjectACL 中读取Object ACL 账号级别权限(RAM) 使用场景 如果您购买了云资源,您的组织里有多个用户需要使用这些云资源,这些用户只能共享使用您的云账号AccessKey。这里有两个问题: 您的密钥由多人共享,泄露的风险很高。 您无法控制特定用户能访问哪些资源(比如Bucket)的权限。 解决方法:在您的阿里云账号下面,通过RAM可以创建具有自己AccessKey的子用户。您的阿里云账号被称为主账号,创建出来的账号被称为子账号,使用子账号的AccessKey只能使用主账号授权的操作和资源。 具体实现 有关RAM详情,请参考RAM用户手册。 对于授权中需要的Policy的配置方式可以参考本章最后一节:RAM和STS授权策略(Policy)配置。 临时账号权限(STS) 使用场景 对于您本地身份系统所管理的用户,比如您的App的用户、您的企业本地账号、第三方App,也有直接访问OSS资源的可能,将这部分用户称为联盟用户。此外,用户还可以是您创建的能访问您的阿里云资源的应用程序。 对于这部分联盟用户,通过阿里云STS (Security Token Service) 服务为阿里云账号(或RAM用户)提供短期访问权限管理。您不需要透露云账号(或RAM用户)的长期密钥(如登录密码、AccessKey),只需要生成一个短期访问凭证给联盟用户使用即可。这个凭证的访问权限及有效期限都可以由您自定义。您不需要关心权限撤销问题,访问凭证过期后会自动失效。 用户通过STS生成的凭证包括安全令牌(SecurityToken)、临时访问密钥(AccessKeyId, AccessKeySecret)。使用AccessKey方法与您在使用阿里云账户或RAM用户AccessKey发送请求时的方法相同。此外还需要注意的是在每个向OSS发送的请求中必须携带安全令牌。 具体实现 STS安全令牌、角色管理和使用相关内容详情,请参考RAM用户指南中的角色管理。关键是调用STS服务接口AssumeRole来获取有效访问凭证即可,也可以直接使用STS SDK来调用该方法。 RAM和STS应用场景实践 对于不同的应用场景,涉及到的访问身份验证方式可能存在差异。下面以几种典型的应用场景来说明访问身份验证中几种使用方式。 以一个移动App举例。假设您是一个移动App开发者,打算使用阿里云OSS服务来保存App的终端用户数据,并且要保证每个App用户之间的数据隔离,防止一个App用户获取到其它App用户的数据。 方式一:使用AppServer来做数据中转和数据隔离如上图所示,您需要开发一个AppServer。只有AppServer能访问云服务,ClientApp的每次读写数据都需要通过AppServer,AppServer来保证不同用户数据的隔离访问。 对于该种使用方式,使用阿里云账号或者RAM账号提供的密钥来进行签名验证访问。建议您尽量不要直接使用阿里云账号(主账号)的密钥访问OSS,避免出现安全问题。 方式二:使用STS让用户直接访问OSS STS方案描述如下图所示:方案的详细描述如下: App用户登录。App用户和云账号无关,它是App的终端用户,AppServer支持App用户登录。对于每个有效的App用户来说,需要AppServer能定义出每个App用户的最小访问权限。 AppServer请求STS服务获取一个安全令牌(SecurityToken)。在调用STS之前,AppServer需要确定App用户的最小访问权限(用Policy语法描述)以及授权的过期时间。然后通过扮演角色(AssumeRole)来获取一个代表角色身份的安全令牌。 STS返回给AppServer一个有效的访问凭证,包括一个安全令牌(SecurityToken)、临时访问密钥(AccessKeyId, AccessKeySecret)以及过期时间。 AppServer将访问凭证返回给ClientApp。ClientApp可以缓存这个凭证。当凭证失效时,ClientApp需要向AppServer申请新的有效访问凭证。比如,访问凭证有效期为1小时,那么ClientApp可以每30分钟向AppServer请求更新访问凭证。 ClientApp使用本地缓存的访问凭证去请求Aliyun Service API。云服务会感知STS访问凭证,并会依赖STS服务来验证访问凭证,正确响应用户请求。 RAM和STS授权策略(Policy)配置 对于RAM或者STS授权中使用Policy,详细规则如下。 示例 先看下面的一个Policy示例: { "Version": "1", "Statement": [ { "Action": [ "oss:GetBucketAcl", "oss:ListObjects" ], "Resource": [ "acs:oss:*:1775305056529849:mybucket" ], "Effect": "Allow", "Condition": { "StringEquals": { "acs:UserAgent": "java-sdk", "oss:Prefix": "foo" }, "IpAddress": { "acs:SourceIp": "192.168.0.1" } } }, { "Action": [ "oss:PutObject", "oss:GetObject", "oss:DeleteObject" ], "Resource": [ "acs:oss:*:1775305056529849:mybucket/file*" ], "Effect": "Allow", "Condition": { "IpAddress": { "acs:SourceIp": "192.168.0.1" } } } ] } 这是一个授权的Policy,用户用这样的一个Policy通过RAM或STS服务向其他用户授权。Policy当中有一个Statement(一条Policy当中可以有多条Statement)。Statement里面规定了相应的Action、Resource、Effect和Condition。 这条Policy把用户自己名下的mybucket和mybucket/file*这些资源授权给相应的用户,并且支持GetBucketAcl、GetBucket、PutObject、GetObject和DeleteObject这几种操作。Condition中的条件表示UserAgent为java-sdk,源IP为192.168.0.1的时候鉴权才能通过,被授权的用户才能访问相关的资源。Prefix这个Condition是在GetBucket(ListObjects)的时候起作用的,关于这个字段的解释详见OSS的API文档。 配置细则 Version Version定义了Policy的版本,本文档中sw2q的配置方式,设置为1。 Statement 通过Statement描述授权语义,其中可以根据业务场景包含多条语义,每条包含对Action、Effect、Resource和Condition的描述。每次请求系统会逐条依次匹配检查,所有匹配成功的Statement会根据Effect的设置不同分为通过(Allow)、禁止(Deny),其中禁止(Deny)的优先。如果匹配成功的都为通过,该条请求即鉴权通过。如果匹配成功有一条禁止,或者没有任何条目匹配成功,该条请求被禁止访问。 Action Action分为三大类:Service级别操作,对应的是GetService操作,用来列出所有属于该用户的Bucket列表。 Bucket级别操作,对应类似于oss:PutBucketAcl、oss:GetBucketLocation之类的操作,操作的对象是Bucket,它们的名称和相应的接口名称一一对应。 Object级别操作,分为oss:GetObject、oss:PutObject、oss:DeleteObject和oss:AbortMultipartUpload,操作对象是Object。 如想授权某一类的Object的操作,可以选择这几种的一种或几种。另外,所有的Action前面都必须加上oss:,如上面例子所示。Action是一个列表,可以有多个Action。具体的Action和API接口的对应关系如下: Service级别 API Action GetService(ListBuckets) oss:ListBuckets Bucket级别 API Action PutBucket oss:PutBucket GetBucket(ListObjects) oss:ListObjects PutBucketAcl oss:PutBucketAcl DeleteBucket oss:DeleteBucket GetBucketLocation oss:GetBucketLocation GetBucketAcl oss:GetBucketAcl GetBucketLogging oss:GetBucketLogging PutBucketLogging oss:PutBucketLogging DeleteBucketLogging oss:DeleteBucketLogging GetBucketWebsite oss:GetBucketWebsite PutBucketWebsite oss:PutBucketWebsite DeleteBucketWebsite oss:DeleteBucketWebsite GetBucketReferer oss:GetBucketReferer PutBucketReferer oss:PutBucketReferer GetBucketLifecycle oss:GetBucketLifecycle PutBucketLifecycle oss:PutBucketLifecycle DeleteBucketLifecycle oss:DeleteBucketLifecycle ListMultipartUploads oss:ListMultipartUploads PutBucketCors oss:PutBucketCors GetBucketCors oss:GetBucketCors DeleteBucketCors oss:DeleteBucketCors PutBucketReplication oss:PutBucketReplication GetBucketReplication oss:GetBucketReplication DeleteBucketReplication oss:DeleteBucketReplication GetBucketReplicationLocation oss:GetBucketReplicationLocation GetBucketReplicationProgress oss:GetBucketReplicationProgress Object级别 API Action GetObject oss:GetObject HeadObject oss:GetObject PutObject oss:PutObject PostObject oss:PutObject InitiateMultipartUpload oss:PutObject UploadPart oss:PutObject CompleteMultipart oss:PutObject DeleteObject oss:DeleteObject DeleteMultipartObjects oss:DeleteObject AbortMultipartUpload oss:AbortMultipartUpload ListParts oss:ListParts CopyObject oss:GetObject,oss:PutObject UploadPartCopy oss:GetObject,oss:PutObject AppendObject oss:PutObject GetObjectAcl oss:GetObjectAcl PutObjectAcl oss:PutObjectAcl Resource Resource指代的是OSS上面的某个具体的资源或者某些资源(支持*通配),resource的规则是acs:oss:{region}:{bucket_owner}:{bucket_name}/{object_name}。对于所有Bucket级别的操作来说不需要最后的斜杠和{object_name},即acs:oss:{region}:{bucket_owner}:{bucket_name}。Resource也是一个列表,可以有多个Resource。其中的region字段暂时不做支持,设置为*。 Effect Effect代表本条的Statement的授权的结果,分为Allow和Deny,分别指代通过和禁止。多条Statement同时匹配成功时,禁止(Deny)的优先级更高。 例如,期望禁止用户对某一目录进行删除,但对于其他文件有全部权限: { "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:*" ], "Resource": [ "acs:oss:*:*:bucketname" ] }, { "Effect": "Deny", "Action": [ "oss:DeleteObject" ], "Resource": [ "acs:oss:*:*:bucketname/index/*", ] } ] } Condition Condition代表Policy授权的一些条件,上面的示例里面可以设置对于acs:UserAgent的检查、acs:SourceIp的检查、还有oss:Prefix这项用来在GetBucket的时候对资源进行限制。 OSS支持的Condition如下: condition 功能 合法取值 acs:SourceIp 指定ip网段 普通的ip,支持*通配 acs:UserAgent 指定http useragent头 字符串 acs:CurrentTime 指定合法的访问时间 ISO8601格式 acs:SecureTransport 是否是https协议 “true”或者”false” oss:Prefix 用作ListObjects时的prefix 合法的object name 更多示例 针对具体场景更多的授权策略配置示例,可以参考教程示例:控制存储空间和文件夹的访问权限和OSS授权常见问题。 Policy在线图形化便捷配置工具,请单击这里。 最佳实践 RAM和STS使用指南

2019-12-01 23:12:47 0 浏览量 回答数 0

阿里云高校特惠,助力学生创业梦!0元体验,快速入门云计算!

学生动手场景应用,快速了解并掌握云服务器的各种新奇玩法!

回答

详细解答可以参考官方帮助文档 发送访问OSS的请求 您可以直接使用OSS提供的RESTful API接口访问或者使用对API接口进行完整封装的SDK开发包。而每一次向OSS的请求根据当前Bucket权限和操作不同要求用户进行身份验证或者直接匿名访问。对OSS的资源访问的分类如下: 按访问者的角色可分为拥有者访问和第三方用户访问。这里的拥有者指的是Bucket的Owner,也称为开发者。第三方用户是指访问Bucket里资源的用户。 按访问者的身份信息可分为匿名访问和带签名访问。对于OSS来说,如果请求中没有携带任何和身份相关的信息即为匿名访问。带签名访问指的是按照OSS API文档中规定的在请求头部或者在请求URL中携带签名的相关信息。 AccessKey 类型 目前访问 OSS 使用的 AK(AccessKey)有三种类型,具体如下: 阿里云账号AccessKey 阿里云账号AK特指Bucket拥有者的AK,每个阿里云账号提供的AccessKey对拥有的资源有完全的权限。每个阿里云账号能够同时拥有不超过5个active或者inactive的AK对(AccessKeyId和AccessKeySecret)。 用户可以登录AccessKey管理控制台,申请新增或删除AK对。 每个AK对都有active/inactive两种状态。 Active 表明用户的 AK 处于激活状态,可以在身份验证的时候使用。 Inactive 表明用户的 AK 处于非激活状态,不能在身份验证的时候使用。 说明 请避免直接使用阿里云账户的 AccessKey。 RAM子账号AccessKey RAM (Resource Access Management) 是阿里云提供的资源访问控制服务。RAM账号AK指的是通过RAM被授权的AK。这组AK只能按照RAM定义的规则去访问Bucket里的资源。通过RAM,您可以集中管理您的用户(比如员工、系统或应用程序),以及控制用户可以访问您名下哪些资源的权限。比如能够限制您的用户只拥有对某一个Bucket的读权限。子账号是从属于主账号的,并且这些账号下不能拥有实际的任何资源,所有资源都属于主账号。 STS账号AccessKey STS(Security Token Service)是阿里云提供的临时访问凭证服务。STS账号AK指的是通过STS颁发的AK。这组AK只能按照STS定义的规则去访问Bucket里的资源。 身份验证具体实现 目前主要有三种身份验证方式: AK验证 RAM验证 STS验证 当用户以个人身份向OSS发送请求时,其身份验证的实现如下: 用户将发送的请求按照OSS指定的格式生成签名字符串。 用户使用AccessKeySecret对签名字符串进行加密产生验证码。 OSS收到请求以后,通过AccessKeyId找到对应的AccessKeySecret,以同样的方法提取签名字符串和验证码。 如果计算出来的验证码和提供的一样即认为该请求是有效的。 否则,OSS将拒绝处理这次请求,并返回HTTP 403错误。 对于用户来说可以直接使用OSS提供的SDK,配合不同类型的AccessKey即可实现不同的身份验证。 权限控制 针对存放在Bucket的Object的访问,OSS提供了多种权限控制,主要有: Bucket级别权限 Object级别权限 账号级别权限(RAM) 临时账号权限(STS) Bucket级别权限 Bucket权限类型 OSS提供ACL(Access Control List)权限控制方法,OSS ACL提供Bucket级别的权限访问控制,Bucket目前有三种访问权限:public-read-write,public-read和private,它们的含义如下: 权限值 中文名称 权限对访问者的限制 public-read-write 公共读写 任何人(包括匿名访问)都可以对该Bucket中的Object进行读/写/删除操作;所有这些操作产生的费用由该Bucket的Owner承担,请慎用该权限。 public-read 公共读,私有写 只有该Bucket的Owner或者授权对象可以对存放在其中的Object进行写/删除操作;任何人(包括匿名访问)可以对Object进行读操作。 private 私有读写 只有该Bucket的Owner或者授权对象可以对存放在其中的Object进行读/写/删除操作;其他人在未经授权的情况下无法访问该Bucket内的Object。 Bucket权限设定和读取方法 功能使用参考: API:Put BucketACL SDK:Java SDK-设置Bucket ACL 控制台:创建Bucket权限设置 API:Get BucketACL SDK:Java SDK-获取Bucket ACL Object级别权限 Object权限类型 OSS ACL也提供Object级别的权限访问控制。目前Object有四种访问权限:private, public-read, public-read-write, default。Put Object ACL操作通过Put请求中的“x-oss-object-acl”头来设置,这个操作只有Bucket Owner有权限执行。 权限值 中文名称 权限对访问者的限制 public-read-write 公共读写 该ACL表明某个Object是公共读写资源,即所有用户拥有对该Object的读写权限。 public-read 公共读,私有写 该ACL表明某个Object是公共读资源,即非Object Owner只有该Object的读权限,而Object Owner拥有该Object的读写权限。 private 私有读写 该ACL表明某个Object是私有资源,即只有该Object的Owner拥有该Object的读写权限,其他的用户没有权限操作该Object。 default 默认权限 该ACL表明某个Object是遵循Bucket读写权限的资源,即Bucket是什么权限,Object就是什么权限。 说明 如果没有设置Object的权限,即Object的ACL为default,Object的权限和Bucket权限一致。 如果设置了Object的权限,Object的权限大于Bucket权限。举个例子,如果设置了Object的权限是public-read,无论Bucket是什么权限,该Object都可以被身份验证访问和匿名访问。 Object权限设定和读取方法 功能使用参考: API:Put Object ACL SDK:Java SDK-ObjectACL 中设定Object ACL API:Get Object ACL SDK:Java SDK-ObjectACL 中读取Object ACL 账号级别权限(RAM) 使用场景 如果您购买了云资源,您的组织里有多个用户需要使用这些云资源,这些用户只能共享使用您的云账号AccessKey。这里有两个问题: 您的密钥由多人共享,泄露的风险很高。 您无法控制特定用户能访问哪些资源(比如Bucket)的权限。 解决方法:在您的阿里云账号下面,通过RAM可以创建具有自己AccessKey的子用户。您的阿里云账号被称为主账号,创建出来的账号被称为子账号,使用子账号的AccessKey只能使用主账号授权的操作和资源。 具体实现 有关RAM详情,请参考RAM用户手册。 对于授权中需要的Policy的配置方式可以参考本章最后一节:RAM和STS授权策略(Policy)配置。 临时账号权限(STS) 使用场景 对于您本地身份系统所管理的用户,比如您的App的用户、您的企业本地账号、第三方App,也有直接访问OSS资源的可能,将这部分用户称为联盟用户。此外,用户还可以是您创建的能访问您的阿里云资源的应用程序。 对于这部分联盟用户,通过阿里云STS (Security Token Service) 服务为阿里云账号(或RAM用户)提供短期访问权限管理。您不需要透露云账号(或RAM用户)的长期密钥(如登录密码、AccessKey),只需要生成一个短期访问凭证给联盟用户使用即可。这个凭证的访问权限及有效期限都可以由您自定义。您不需要关心权限撤销问题,访问凭证过期后会自动失效。 用户通过STS生成的凭证包括安全令牌(SecurityToken)、临时访问密钥(AccessKeyId, AccessKeySecret)。使用AccessKey方法与您在使用阿里云账户或RAM用户AccessKey发送请求时的方法相同。此外还需要注意的是在每个向OSS发送的请求中必须携带安全令牌。 具体实现 STS安全令牌、角色管理和使用相关内容详情,请参考RAM用户指南中的角色管理。关键是调用STS服务接口AssumeRole来获取有效访问凭证即可,也可以直接使用STS SDK来调用该方法。 RAM和STS应用场景实践 对于不同的应用场景,涉及到的访问身份验证方式可能存在差异。下面以几种典型的应用场景来说明访问身份验证中几种使用方式。 以一个移动App举例。假设您是一个移动App开发者,打算使用阿里云OSS服务来保存App的终端用户数据,并且要保证每个App用户之间的数据隔离,防止一个App用户获取到其它App用户的数据。 方式一:使用AppServer来做数据中转和数据隔离如上图所示,您需要开发一个AppServer。只有AppServer能访问云服务,ClientApp的每次读写数据都需要通过AppServer,AppServer来保证不同用户数据的隔离访问。 对于该种使用方式,使用阿里云账号或者RAM账号提供的密钥来进行签名验证访问。建议您尽量不要直接使用阿里云账号(主账号)的密钥访问OSS,避免出现安全问题。 方式二:使用STS让用户直接访问OSS STS方案描述如下图所示:方案的详细描述如下: App用户登录。App用户和云账号无关,它是App的终端用户,AppServer支持App用户登录。对于每个有效的App用户来说,需要AppServer能定义出每个App用户的最小访问权限。 AppServer请求STS服务获取一个安全令牌(SecurityToken)。在调用STS之前,AppServer需要确定App用户的最小访问权限(用Policy语法描述)以及授权的过期时间。然后通过扮演角色(AssumeRole)来获取一个代表角色身份的安全令牌。 STS返回给AppServer一个有效的访问凭证,包括一个安全令牌(SecurityToken)、临时访问密钥(AccessKeyId, AccessKeySecret)以及过期时间。 AppServer将访问凭证返回给ClientApp。ClientApp可以缓存这个凭证。当凭证失效时,ClientApp需要向AppServer申请新的有效访问凭证。比如,访问凭证有效期为1小时,那么ClientApp可以每30分钟向AppServer请求更新访问凭证。 ClientApp使用本地缓存的访问凭证去请求Aliyun Service API。云服务会感知STS访问凭证,并会依赖STS服务来验证访问凭证,正确响应用户请求。 RAM和STS授权策略(Policy)配置 对于RAM或者STS授权中使用Policy,详细规则如下。 示例 先看下面的一个Policy示例: { "Version": "1", "Statement": [ { "Action": [ "oss:GetBucketAcl", "oss:ListObjects" ], "Resource": [ "acs:oss:*:1775305056529849:mybucket" ], "Effect": "Allow", "Condition": { "StringEquals": { "acs:UserAgent": "java-sdk", "oss:Prefix": "foo" }, "IpAddress": { "acs:SourceIp": "192.168.0.1" } } }, { "Action": [ "oss:PutObject", "oss:GetObject", "oss:DeleteObject" ], "Resource": [ "acs:oss:*:1775305056529849:mybucket/file*" ], "Effect": "Allow", "Condition": { "IpAddress": { "acs:SourceIp": "192.168.0.1" } } } ] } 这是一个授权的Policy,用户用这样的一个Policy通过RAM或STS服务向其他用户授权。Policy当中有一个Statement(一条Policy当中可以有多条Statement)。Statement里面规定了相应的Action、Resource、Effect和Condition。 这条Policy把用户自己名下的mybucket和mybucket/file*这些资源授权给相应的用户,并且支持GetBucketAcl、GetBucket、PutObject、GetObject和DeleteObject这几种操作。Condition中的条件表示UserAgent为java-sdk,源IP为192.168.0.1的时候鉴权才能通过,被授权的用户才能访问相关的资源。Prefix这个Condition是在GetBucket(ListObjects)的时候起作用的,关于这个字段的解释详见OSS的API文档。 配置细则 Version Version定义了Policy的版本,本文档中sw2q的配置方式,设置为1。 Statement 通过Statement描述授权语义,其中可以根据业务场景包含多条语义,每条包含对Action、Effect、Resource和Condition的描述。每次请求系统会逐条依次匹配检查,所有匹配成功的Statement会根据Effect的设置不同分为通过(Allow)、禁止(Deny),其中禁止(Deny)的优先。如果匹配成功的都为通过,该条请求即鉴权通过。如果匹配成功有一条禁止,或者没有任何条目匹配成功,该条请求被禁止访问。 Action Action分为三大类:Service级别操作,对应的是GetService操作,用来列出所有属于该用户的Bucket列表。 Bucket级别操作,对应类似于oss:PutBucketAcl、oss:GetBucketLocation之类的操作,操作的对象是Bucket,它们的名称和相应的接口名称一一对应。 Object级别操作,分为oss:GetObject、oss:PutObject、oss:DeleteObject和oss:AbortMultipartUpload,操作对象是Object。 如想授权某一类的Object的操作,可以选择这几种的一种或几种。另外,所有的Action前面都必须加上oss:,如上面例子所示。Action是一个列表,可以有多个Action。具体的Action和API接口的对应关系如下: Service级别 API Action GetService(ListBuckets) oss:ListBuckets Bucket级别 API Action PutBucket oss:PutBucket GetBucket(ListObjects) oss:ListObjects PutBucketAcl oss:PutBucketAcl DeleteBucket oss:DeleteBucket GetBucketLocation oss:GetBucketLocation GetBucketAcl oss:GetBucketAcl GetBucketLogging oss:GetBucketLogging PutBucketLogging oss:PutBucketLogging DeleteBucketLogging oss:DeleteBucketLogging GetBucketWebsite oss:GetBucketWebsite PutBucketWebsite oss:PutBucketWebsite DeleteBucketWebsite oss:DeleteBucketWebsite GetBucketReferer oss:GetBucketReferer PutBucketReferer oss:PutBucketReferer GetBucketLifecycle oss:GetBucketLifecycle PutBucketLifecycle oss:PutBucketLifecycle DeleteBucketLifecycle oss:DeleteBucketLifecycle ListMultipartUploads oss:ListMultipartUploads PutBucketCors oss:PutBucketCors GetBucketCors oss:GetBucketCors DeleteBucketCors oss:DeleteBucketCors PutBucketReplication oss:PutBucketReplication GetBucketReplication oss:GetBucketReplication DeleteBucketReplication oss:DeleteBucketReplication GetBucketReplicationLocation oss:GetBucketReplicationLocation GetBucketReplicationProgress oss:GetBucketReplicationProgress Object级别 API Action GetObject oss:GetObject HeadObject oss:GetObject PutObject oss:PutObject PostObject oss:PutObject InitiateMultipartUpload oss:PutObject UploadPart oss:PutObject CompleteMultipart oss:PutObject DeleteObject oss:DeleteObject DeleteMultipartObjects oss:DeleteObject AbortMultipartUpload oss:AbortMultipartUpload ListParts oss:ListParts CopyObject oss:GetObject,oss:PutObject UploadPartCopy oss:GetObject,oss:PutObject AppendObject oss:PutObject GetObjectAcl oss:GetObjectAcl PutObjectAcl oss:PutObjectAcl Resource Resource指代的是OSS上面的某个具体的资源或者某些资源(支持*通配),resource的规则是acs:oss:{region}:{bucket_owner}:{bucket_name}/{object_name}。对于所有Bucket级别的操作来说不需要最后的斜杠和{object_name},即acs:oss:{region}:{bucket_owner}:{bucket_name}。Resource也是一个列表,可以有多个Resource。其中的region字段暂时不做支持,设置为*。 Effect Effect代表本条的Statement的授权的结果,分为Allow和Deny,分别指代通过和禁止。多条Statement同时匹配成功时,禁止(Deny)的优先级更高。 例如,期望禁止用户对某一目录进行删除,但对于其他文件有全部权限: { "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:*" ], "Resource": [ "acs:oss:*:*:bucketname" ] }, { "Effect": "Deny", "Action": [ "oss:DeleteObject" ], "Resource": [ "acs:oss:*:*:bucketname/index/*", ] } ] } Condition Condition代表Policy授权的一些条件,上面的示例里面可以设置对于acs:UserAgent的检查、acs:SourceIp的检查、还有oss:Prefix这项用来在GetBucket的时候对资源进行限制。 OSS支持的Condition如下: condition 功能 合法取值 acs:SourceIp 指定ip网段 普通的ip,支持*通配 acs:UserAgent 指定http useragent头 字符串 acs:CurrentTime 指定合法的访问时间 ISO8601格式 acs:SecureTransport 是否是https协议 “true”或者”false” oss:Prefix 用作ListObjects时的prefix 合法的object name 更多示例 针对具体场景更多的授权策略配置示例,可以参考教程示例:控制存储空间和文件夹的访问权限和OSS授权常见问题。 Policy在线图形化便捷配置工具,请单击这里。 最佳实践 RAM和STS使用指南

2019-12-01 23:12:47 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

回答

准备工作 登录控制台创建应用 手动在控制台根据实际业务需要创建对应表结构及其它相关配置,例如:索引,属性,数据源,过滤条件等。 下载此处我们提供的测试 应用结构模板,在创建应用结构时,选择“通过模板创建应用结构”,然后下一步,再选择左上角的“导入模板”,上传此处下载的应用结构模板,一直下一步直到完成。【此应用结构测试模板,可适用于标准版Java SDK文档中的搜索及推送数据Demo代码】 获取用户AccessKeyId和秘钥(secret) 用户可以使用阿里云的账号登录本系统,在登录完成后,点击“ACCESSKEY管理”可以查看您的Access Key ID(AccessKeyId)和 Access Key Secret(secret)。也可以在阿里云官网,点击“用户中心>我的服务>安全验证”即可到ACCESSKEY管理中心。 将SDK添加到项目中 使用OpenSearch SDK有两种方式: 1.下载SDK源码包,在下载中心下载最新版的JAVA SDK到本地,再下载此处的 slf4j-api-1.7.25 依赖 jar包,并将这2个jar包 import 到您的项目中,若项目中不包含此依赖jar包,会出现运行报错。 2.引入OpenSearch SDK依赖,通过maven二方库依赖的方式将opensearch的sdk加入到自己的项目中。 com.aliyun.opensearch aliyun-sdk-opensearch 3.1.3 创建client 通过控制台也可以完成创建应用的操作,这里介绍一下如何使用SDK实现。这里使用import SDK的方式,使用上面获取的AccessKey和Secret实例化一个SearcherClient(下面的操作里将继续使用如下的client),具体代码如下: import com.aliyun.opensearch.*; import com.aliyun.opensearch.sdk.dependencies.com.google.common.collect.Lists; import com.aliyun.opensearch.sdk.generated.OpenSearch; import com.aliyun.opensearch.sdk.generated.search.Config; import com.aliyun.opensearch.sdk.generated.search.SearchFormat; String appName = "应用名称"; String accesskey = "您的阿里云的Access Key ID"; String secret = "阿里云 Access Key ID 对应的 Access Key Secret"; String host = "这里的host需要根据访问应用基本信息页中提供的的API入口来确定"; //创建并构造OpenSearch对象 OpenSearch openSearch = new OpenSearch(accesskey, secret, host); //创建OpenSearchClient对象,并以OpenSearch对象作为构造参数 OpenSearchClient serviceClient = new OpenSearchClient(openSearch); 上传文档 OpenSearch的文档是一个json类型的字符串,结构如下: 打开控制台中的应用后,内部右上角也有 “上传文件” 功能,里面提供了类似下面的json格式测试数据,可下载下来直接上传使用,注意文件必须是utf8格式,且不能包含BOM头,否者上传会报错。 [ { “fields”:{...}, “cmd”:"..." } ... ] 一条文档是由fields字段和cmd字段构成的一个结构体,其中fields字段内包含文档的核心数据,cmd表示针对此条文档所做的操作,但标准版和高级版部分操作有所不同,标准版不支持update及部分字段更新,只支持全字段更新,因此对文档的添加,更新操作都是通过(add)方式实现,删除(delete)与原来相同。一段文档示例如下: [ { “fields”: { “id”: "0", “name”: "广大中小企业都有各种结构化的数据需要进行检索,目前一般采用数据库本身提供的搜索功能或者利用open source的搜索软件搭建,这样的做法不但会消耗网站本身的资源,性能也会很容易成为问题,而且相关性通常也不够好。我们的产品的目的是要利用阿里云先进的云计算和搜索技术向广大中小企业提供低成本,高质量,高性能,可定制的数据搜索解决方案。本项目和云搜索的通用解决方案目标略有不同,主要区别为本项目主要针对用户的结构化数据进行搜索,云搜索的通用解决方案则主要是针对网页型数据为处理对象。" }, “cmd”: "ADD" }, { “fields”: { “id”: "1", “name”: "云搜索( Cloud Search Engine),是运用云计算( Cloud Computing)技术的搜索引擎,可以绑定多个域名,定义搜索范围和性质,同时,不同域名可以有不同UI和流程,这个UI和流程由运行在云计算服务器上的个性化程序完成。作为新型搜索引擎,与传统搜索引擎需要输入多个关键字不同的是,用户可以告诉搜索引擎每个搜索关键字的比重,每个搜索关键字都被置于“搜索云”中,并用不同大小,粗细的字型区分。 " }, “cmd”: "ADD" } ] 将文档上传到应用的某个表中的代码如下: //定义DocumentClient对象添加json格式doc数据批量提交 DocumentClient documentClient = new DocumentClient(serviceClient); table_name = "要上传数据的表名"; data = "[{"cmd":"add", "fields":{"id":"0","name":"blabla..."}}]"; //执行推送操作 OpenSearchResult osr = documentClient.push(data, appName, table_name); 另外还可以通过DocumentClient类的提供的add、remove二个接口生成待上传的数据,最后在调用push方法将数据上传; 开始搜索 OpenSearch通过设置可以实现高度个性化的搜索需求,但通用的基本的搜索功能只需通过非常简单的设置即可实现: //创建SearcherClient对象,并以OpenSearchClient对象作为构造参数 SearcherClient searcherClient = new SearcherClient(serviceClient); //定义Config对象,用于设定config子句参数,指定应用名,分页,数据返回格式等等 Config config = new Config(Lists.newArrayList(appName)); config.setStart(0); config.setHits(5); //设置返回格式为fulljson格式 config.setSearchFormat(SearchFormat.JSON); // 创建参数对象 SearchParams searchParams = new SearchParams(config); // 指定搜索的关键词,这里要指定在哪个索引上搜索,如果不指定的话默认在使用“default”索引(索引字段名称是您在您的数据结构中的“索引字段列表”中对应字段。),若需多个索引组合查询,需要在setQuery处合并,否则若设置多个setQuery子句,则后面的子句会替换前面子句 searchParams.setQuery("name:'搜索'"); //设置查询过滤条件 searchParams.setFilter("id>0"); //创建sort对象,并设置二维排序 Sort sort = new Sort(); //设置id字段降序 sort.addToSortFields(new SortField("id", Order.DECREASE)); //若id相同则以RANK相关性算分升序 sort.addToSortFields(new SortField("RANK", Order.INCREASE)); //添加Sort对象参数 searchParams.setSort(sort); //执行查询语句返回数据对象 SearchResult searchResult = searcherClient.execute(searchParams); //以字符串返回查询数据 String result = searchResult.getResult(); 调试 通过上面的操作我们已经可以使用基本的搜索功能了,但是优化搜索、提高搜索结果相关性是一个漫长的的过程,需要我们不断试错和迭代来一点点改进。在这个过程中如果遇到问题或者发现结果与预期不一致时可以通过下面的接口获得请求的详细信息,您可以通过这些信息排查问题。特别是当您遇到问题,在旺旺群、钉钉群中寻求帮助的时候,根据您提供的调试信息我们可以迅速帮您定位到问题所在,主要向我们提供查询异常或不符合预期返回的,请求ID 或 查询http请求串等信息,进行查询分析定位原因。 部分用户有可能会有记录查询请求串的需求,例如打印上一次查询请求串信息,该信息中的部分查询子句可以直接截取出来放到控制台中的搜索测试框中运行调试,可参考如下代码 SearchResultDebug searchdebugrst = searcherClient.executeDebug(searchParams); System.out.println(searchdebugrst.getRequestUrl());

保持可爱mmm 2020-03-26 22:02:23 0 浏览量 回答数 0

问题

【精品问答】Java技术1000问(1)

问问小秘 2019-12-01 21:57:43 39926 浏览量 回答数 17

问题

MaxCompute百问集锦(持续更新20171011)

隐林 2019-12-01 20:19:23 38430 浏览量 回答数 18

回答

134题 其实就是水平扩容了,Zookeeper在这方面不太好。两种方式:全部重启:关闭所有Zookeeper服务,修改配置之后启动。不影响之前客户端的会话。逐个重启:这是比较常用的方式。 133题 集群最低3(2N+1)台,保证奇数,主要是为了选举算法。一个由 3 台机器构成的 ZooKeeper 集群,能够在挂掉 1 台机器后依然正常工作,而对于一个由 5 台服务器构成的 ZooKeeper 集群,能够对 2 台机器挂掉的情况进行容灾。注意,如果是一个由6台服务器构成的 ZooKeeper 集群,同样只能够挂掉 2 台机器,因为如果挂掉 3 台,剩下的机器就无法实现过半了。 132题 基于“过半”设计原则,ZooKeeper 在运行期间,集群中至少有过半的机器保存了最新的数据。因此,只要集群中超过半数的机器还能够正常工作,整个集群就能够对外提供服务。 131题 不是。官方声明:一个Watch事件是一个一次性的触发器,当被设置了Watch的数据发生了改变的时候,则服务器将这个改变发送给设置了Watch的客户端,以便通知它们。为什么不是永久的,举个例子,如果服务端变动频繁,而监听的客户端很多情况下,每次变动都要通知到所有的客户端,这太消耗性能了。一般是客户端执行getData(“/节点A”,true),如果节点A发生了变更或删除,客户端会得到它的watch事件,但是在之后节点A又发生了变更,而客户端又没有设置watch事件,就不再给客户端发送。在实际应用中,很多情况下,我们的客户端不需要知道服务端的每一次变动,我只要最新的数据即可。 130题 数据发布/订阅,负载均衡,命名服务,分布式协调/通知,集群管理,Master 选举,分布式锁,分布式队列 129题 客户端 SendThread 线程接收事件通知, 交由 EventThread 线程回调 Watcher。客户端的 Watcher 机制同样是一次性的, 一旦被触发后, 该 Watcher 就失效了。 128题 1、服务端接收 Watcher 并存储; 2、Watcher 触发; 2.1 封装 WatchedEvent; 2.2 查询 Watcher; 2.3 没找到;说明没有客户端在该数据节点上注册过 Watcher; 2.4 找到;提取并从 WatchTable 和 Watch2Paths 中删除对应 Watcher; 3、调用 process 方法来触发 Watcher。 127题 1.调用 getData()/getChildren()/exist()三个 API,传入 Watcher 对象 2.标记请求 request,封装 Watcher 到 WatchRegistration 3.封装成 Packet 对象,发服务端发送 request 4.收到服务端响应后,将 Watcher 注册到 ZKWatcherManager 中进行管理 5.请求返回,完成注册。 126题 Zookeeper 允许客户端向服务端的某个 Znode 注册一个 Watcher 监听,当服务端的一些指定事件触发了这个 Watcher,服务端会向指定客户端发送一个事件通知来实现分布式的通知功能,然后客户端根据 Watcher 通知状态和事件类型做出业务上的改变。工作机制:(1)客户端注册 watcher(2)服务端处理 watcher(3)客户端回调 watcher 125题 服务器具有四种状态,分别是 LOOKING、FOLLOWING、LEADING、OBSERVING。 LOOKING:寻 找 Leader 状态。当服务器处于该状态时,它会认为当前集群中没有 Leader,因此需要进入 Leader 选举状态。 FOLLOWING:跟随者状态。表明当前服务器角色是 Follower。 LEADING:领导者状态。表明当前服务器角色是 Leader。 OBSERVING:观察者状态。表明当前服务器角色是 Observer。 124题 Zookeeper 有三种部署模式:单机部署:一台集群上运行;集群部署:多台集群运行;伪集群部署:一台集群启动多个 Zookeeper 实例运行。 123题 Paxos算法是分布式选举算法,Zookeeper使用的 ZAB协议(Zookeeper原子广播),二者有相同的地方,比如都有一个Leader,用来协调N个Follower的运行;Leader要等待超半数的Follower做出正确反馈之后才进行提案;二者都有一个值来代表Leader的周期。不同的地方在于:ZAB用来构建高可用的分布式数据主备系统(Zookeeper),Paxos是用来构建分布式一致性状态机系统。Paxos算法、ZAB协议要想讲清楚可不是一时半会的事儿,自1990年莱斯利·兰伯特提出Paxos算法以来,因为晦涩难懂并没有受到重视。后续几年,兰伯特通过好几篇论文对其进行更进一步地解释,也直到06年谷歌发表了三篇论文,选择Paxos作为chubby cell的一致性算法,Paxos才真正流行起来。对于普通开发者来说,尤其是学习使用Zookeeper的开发者明确一点就好:分布式Zookeeper选举Leader服务器的算法与Paxos有很深的关系。 122题 ZAB协议是为分布式协调服务Zookeeper专门设计的一种支持崩溃恢复的原子广播协议(paxos算法的一种实现)。ZAB协议包括两种基本的模式:崩溃恢复和消息广播。当整个zookeeper集群刚刚启动或者Leader服务器宕机、重启或者网络故障导致不存在过半的服务器与Leader服务器保持正常通信时,所有进程(服务器)进入崩溃恢复模式,首先选举产生新的Leader服务器,然后集群中Follower服务器开始与新的Leader服务器进行数据同步,当集群中超过半数机器与该Leader服务器完成数据同步之后,退出恢复模式进入消息广播模式,Leader服务器开始接收客户端的事务请求生成事物提案来进行事务请求处理。 121题 Zookeeper本身也是集群,推荐配置不少于3个服务器。Zookeeper自身也要保证当一个节点宕机时,其他节点会继续提供服务。如果是一个Follower宕机,还有2台服务器提供访问,因为Zookeeper上的数据是有多个副本的,数据并不会丢失;如果是一个Leader宕机,Zookeeper会选举出新的Leader。ZK集群的机制是只要超过半数的节点正常,集群就能正常提供服务。只有在ZK节点挂得太多,只剩一半或不到一半节点能工作,集群才失效。所以,3个节点的cluster可以挂掉1个节点(leader可以得到2票>1.5),2个节点的cluster就不能挂掉任何1个节点了(leader可以得到1票<=1)。 120题 选完Leader以后,zk就进入状态同步过程。1、Leader等待server连接;2、Follower连接leader,将最大的zxid发送给leader;3、Leader根据follower的zxid确定同步点;4、完成同步后通知follower 已经成为uptodate状态;5、Follower收到uptodate消息后,又可以重新接受client的请求进行服务了。 119题 在zookeeper集群中也是一样,每个节点都会投票,如果某个节点获得超过半数以上的节点的投票,则该节点就是leader节点了。zookeeper中有三种选举算法,分别是LeaderElection,FastLeaderElection,AuthLeaderElection, FastLeaderElection此算法和LeaderElection不同的是它不会像后者那样在每轮投票中要搜集到所有结果后才统计投票结果,而是不断的统计结果,一旦没有新的影响leader结果的notification出现就返回投票结果。这样的效率更高。 118题 zk的负载均衡是可以调控,nginx只是能调权重,其他需要可控的都需要自己写插件;但是nginx的吞吐量比zk大很多,应该说按业务选择用哪种方式。 117题 Zookeeper 的核心是原子广播,这个机制保证了各个Server之间的同步。实现这个机制的协议叫做Zab协议。Zab协议有两种模式,它们分别是恢复模式(选主)和广播模式(同步)。当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数Server完成了和 leader的状态同步以后,恢复模式就结束了。状态同步保证了leader和Server具有相同的系统状态。 116题 有临时节点和永久节点,分再细一点有临时有序/无序节点,有永久有序/无序节点。当创建临时节点的程序结束后,临时节点会自动消失,临时节点上的数据也会一起消失。 115题 在分布式环境中,有些业务逻辑只需要集群中的某一台机器进行执行,其他的机器可以共享这个结果,这样可以大大减少重复计算,提高性能,这就是主节点存在的意义。 114题 ZooKeeper 实现分布式事务,类似于两阶段提交,总共分为以下 4 步:客户端先给 ZooKeeper 节点发送写请求;ZooKeeper 节点将写请求转发给 Leader 节点,Leader 广播给集群要求投票,等待确认;Leader 收到确认,统计投票,票数过半则提交事务;事务提交成功后,ZooKeeper 节点告知客户端。 113题 ZooKeeper 实现分布式锁的步骤如下:客户端连接 ZooKeeper,并在 /lock 下创建临时的且有序的子节点,第一个客户端对应的子节点为 /lock/lock-10000000001,第二个为 /lock/lock-10000000002,以此类推。客户端获取 /lock 下的子节点列表,判断自己创建的子节点是否为当前子节点列表中序号最小的子节点,如果是则认为获得锁,否则监听刚好在自己之前一位的子节点删除消息,获得子节点变更通知后重复此步骤直至获得锁;执行业务代码;完成业务流程后,删除对应的子节点释放锁。 112题 ZooKeeper 特性如下:顺序一致性(Sequential Consistency):来自相同客户端提交的事务,ZooKeeper 将严格按照其提交顺序依次执行;原子性(Atomicity):于 ZooKeeper 集群中提交事务,事务将“全部完成”或“全部未完成”,不存在“部分完成”;单一系统镜像(Single System Image):客户端连接到 ZooKeeper 集群的任意节点,其获得的数据视图都是相同的;可靠性(Reliability):事务一旦完成,其产生的状态变化将永久保留,直到其他事务进行覆盖;实时性(Timeliness):事务一旦完成,客户端将于限定的时间段内,获得最新的数据。 111题 ZooKeeper 通常有三种搭建模式:单机模式:zoo.cfg 中只配置一个 server.id 就是单机模式了,此模式一般用在测试环境,如果当前主机宕机,那么所有依赖于当前 ZooKeeper 服务工作的其他服务器都不能进行正常工作;伪分布式模式:在一台机器启动不同端口的 ZooKeeper,配置到 zoo.cfg 中,和单机模式相同,此模式一般用在测试环境;分布式模式:多台机器各自配置 zoo.cfg 文件,将各自互相加入服务器列表,上面搭建的集群就是这种完全分布式。 110题 ZooKeeper 主要提供以下功能:分布式服务注册与订阅:在分布式环境中,为了保证高可用性,通常同一个应用或同一个服务的提供方都会部署多份,达到对等服务。而消费者就须要在这些对等的服务器中选择一个来执行相关的业务逻辑,比较典型的服务注册与订阅,如 Dubbo。分布式配置中心:发布与订阅模型,即所谓的配置中心,顾名思义就是发布者将数据发布到 ZooKeeper 节点上,供订阅者获取数据,实现配置信息的集中式管理和动态更新。命名服务:在分布式系统中,通过命名服务客户端应用能够根据指定名字来获取资源、服务地址和提供者等信息。分布式锁:这个主要得益于 ZooKeeper 为我们保证了数据的强一致性。 109题 Dubbo是 SOA 时代的产物,它的关注点主要在于服务的调用,流量分发、流量监控和熔断。而 Spring Cloud诞生于微服务架构时代,考虑的是微服务治理的方方面面,另外由于依托了 Spirng、Spirng Boot的优势之上,两个框架在开始目标就不一致,Dubbo 定位服务治理、Spirng Cloud 是一个生态。 108题 Dubbo通过Token令牌防止用户绕过注册中心直连,然后在注册中心上管理授权。Dubbo还提供服务黑白名单,来控制服务所允许的调用方。 107题 Dubbo超时时间设置有两种方式: 服务提供者端设置超时时间,在Dubbo的用户文档中,推荐如果能在服务端多配置就尽量多配置,因为服务提供者比消费者更清楚自己提供的服务特性。 服务消费者端设置超时时间,如果在消费者端设置了超时时间,以消费者端为主,即优先级更高。因为服务调用方设置超时时间控制性更灵活。如果消费方超时,服务端线程不会定制,会产生警告。 106题 Random LoadBalance: 随机选取提供者策略,有利于动态调整提供者权重。截面碰撞率高,调用次数越多,分布越均匀; RoundRobin LoadBalance: 轮循选取提供者策略,平均分布,但是存在请求累积的问题; LeastActive LoadBalance: 最少活跃调用策略,解决慢提供者接收更少的请求; ConstantHash LoadBalance: 一致性Hash策略,使相同参数请求总是发到同一提供者,一台机器宕机,可以基于虚拟节点,分摊至其他提供者,避免引起提供者的剧烈变动; 缺省时为Random随机调用。 105题 Consumer(消费者),连接注册中心 ,并发送应用信息、所求服务信息至注册中心。 注册中心根据 消费 者所求服务信息匹配对应的提供者列表发送至Consumer 应用缓存。 Consumer 在发起远程调用时基于缓存的消费者列表择其一发起调用。 Provider 状态变更会实时通知注册中心、在由注册中心实时推送至Consumer。 104题 Provider:暴露服务的服务提供方。 Consumer:调用远程服务的服务消费方。 Registry:服务注册与发现的注册中心。 Monitor:统计服务的调用次调和调用时间的监控中心。 Container:服务运行容器。 103题 主要就是如下3个核心功能: Remoting:网络通信框架,提供对多种NIO框架抽象封装,包括“同步转异步”和“请求-响应”模式的信息交换方式。 Cluster:服务框架,提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。 Registry:服务注册,基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。 102题 透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。 101题 垂直分表定义:将一个表按照字段分成多表,每个表存储其中一部分字段。水平分表是在同一个数据库内,把同一个表的数据按一定规则拆到多个表中。 100题 垂直分库是指按照业务将表进行分类,分布到不同的数据库上面,每个库可以放在不同的服务器上,它的核心理念是专库专用。水平分库是把同一个表的数据按一定规则拆到不同的数据库中,每个库可以放在不同的服务器上。 99题 QPS:每秒查询数。TPS:每秒处理事务数。Uptime:服务器已经运行的时间,单位秒。Questions:已经发送给数据库查询数。Com_select:查询次数,实际操作数据库的。Com_insert:插入次数。Com_delete:删除次数。Com_update:更新次数。Com_commit:事务次数。Com_rollback:回滚次数。 98题 如果需要跨主机进行JOIN,跨应用进行JOIN,或者数据库不能获得较好的执行计划,都可以自己通过程序来实现JOIN。 例如:SELECT a.,b. FROM a,b WHERE a.col1=b.col1 AND a.col2> 10 ORDER BY a.col2; 可以利用程序实现,先SELECT * FROM a WHERE a.col2>10 ORDER BY a.col2;–(1) 利用(1)的结果集,做循环,SELECT * FROM b WHERE b.col1=a.col1; 这样可以避免排序,可以在程序里控制执行的速度,有效降低数据库压力,也可以实现跨主机的JOIN。 97题 搭建复制的必备条件:复制的机器之间网络通畅,Master打开了binlog。 搭建复制步骤:建立用户并设置权限,修改配置文件,查看master状态,配置slave,启动从服务,查看slave状态,主从测试。 96题 Heartbeat方案:利用Heartbeat管理VIP,利用crm管理MySQL,MySQL进行双M复制。(Linux系统下没有分库的标准方案)。 LVS+Keepalived方案:利用Keepalived管理LVS和VIP,LVS分发请求到MySQL,MySQL进行双M复制。(Linux系统下无分库无事务的方案)。 Cobar方案:利用Cobar进行HA和分库,应用程序请求Cobar,Cobar转发请求道数据库。(有分库的标准方案,Unix下唯一方案)。 95题 聚集(clustered)索引,也叫聚簇索引,数据行的物理顺序与列值(一般是主键的那一列)的逻辑顺序相同,一个表中只能拥有一个聚集索引。但是,覆盖索引可以模拟多个聚集索引。存储引擎负责实现索引,因此不是所有的存储索引都支持聚集索引。当前,SolidDB和InnoDB是唯一支持聚集索引的存储引擎。 优点:可以把相关数据保存在一起。数据访问快。 缺点:聚集能最大限度地提升I/O密集负载的性能。聚集能最大限度地提升I/O密集负载的性能。建立在聚集索引上的表在插入新行,或者在行的主键被更新,该行必须被移动的时候会进行分页。聚集表可会比全表扫描慢,尤其在表存储得比较稀疏或因为分页而没有顺序存储的时候。第二(非聚集)索引可能会比预想的大,因为它们的叶子节点包含了被引用行的主键列。 94题 以下原因是导致mysql 表毁坏的常见原因: 服务器突然断电导致数据文件损坏; 强制关机,没有先关闭mysql 服务; mysqld 进程在写表时被杀掉; 使用myisamchk 的同时,mysqld 也在操作表; 磁盘故障;服务器死机;mysql 本身的bug 。 93题 1.定位慢查询 首先先打开慢查询日志设置慢查询时间; 2.分析慢查询(使用explain工具分析sql语句); 3.优化慢查询 。

游客ih62co2qqq5ww 2020-06-15 13:55:41 0 浏览量 回答数 0

回答

你好,这里有208份资料,详情请参考:https://github.com/ty4z2008/Qix/blob/master/ds.md 《Reconfigurable Distributed Storage for Dynamic Networks》介绍:这是一篇介绍在动态网络里面实现分布式系统重构的paper.论文的作者(导师)是MIT读博的时候是做分布式系统的研究的,现在在NUS带学生,不仅仅是分布式系统,还有无线网络.如果感兴趣可以去他的主页了解. 《Distributed porgramming liboratory》介绍:分布式编程实验室,他们发表的很多的paper,其中不仅仅是学术研究,还有一些工业界应用的论文. 《MIT Theory of Distributed Systems》介绍:麻省理工的分布式系统理论主页,作者南希·林奇在2002年证明了CAP理论,并且著《分布式算法》一书. 《Notes on Distributed Systems for Young Bloods》介绍:分布式系统搭建初期的一些建议 《Principles of Distributed Computing》介绍:分布式计算原理课程 《Google's Globally-Distributed Database》介绍:Google全球分布式数据介绍,中文版 《The Architecture Of Algolia’s Distributed Search Network》介绍:Algolia的分布式搜索网络的体系架构介绍 《Build up a High Availability Distributed Key-Value Store》介绍:构建高可用分布式Key-Value存储系统 《Distributed Search Engine with Nanomsg and Bond》介绍:Nanomsg和Bond的分布式搜索引擎 《Distributed Processing With MongoDB And Mongothon》介绍:使用MongoDB和Mongothon进行分布式处理 《Salt: Combining ACID and BASE in a Distributed Database》介绍:分布式数据库中把ACID与BASE结合使用. 《Makes it easy to understand Paxos for Distributed Systems》介绍:理解的Paxos的分布式系统,参考阅读:关于Paxos的历史 《There is No Now Problems with simultaneity in distributed systems》介绍:There is No Now Problems with simultaneity in distributed systems 《Distributed Systems》介绍:伦敦大学学院分布式系统课程课件. 《Distributed systems for fun and profit》介绍:分布式系统电子书籍. 《Distributed Systems Spring 2015》介绍:卡内基梅隆大学春季分布式课程主页 《Distributed Systems: Concepts and Design (5th Edition)》介绍: 电子书,分布式系统概念与设计(第五版) 《走向分布式》介绍:这是一位台湾网友 ccshih 的文字,短短的篇幅介绍了分布式系统的若干要点。pdf 《Introduction to Distributed Systems Spring 2013》介绍:清华大学分布式系统课程主页,里面的schedule栏目有很多宝贵的资源 《Distributed systems》介绍:免费的在线分布式系统书籍 《Some good resources for learning about distributed computing》介绍:Quora上面的一篇关于学习分布式计算的资源. 《Spanner: Google’s Globally-Distributed Database》介绍:这个是第一个全球意义上的分布式数据库,也是Google的作品。其中介绍了很多一致性方面的设计考虑,为了简单的逻辑设计,还采用了原子钟,同样在分布式系统方面具有很强的借鉴意义. 《The Chubby lock service for loosely-coupled distributed systems》介绍:Google的统面向松散耦合的分布式系统的锁服务,这篇论文详细介绍了Google的分布式锁实现机制Chubby。Chubby是一个基于文件实现的分布式锁,Google的Bigtable、Mapreduce和Spanner服务都是在这个基础上构建的,所以Chubby实际上是Google分布式事务的基础,具有非常高的参考价值。另外,著名的zookeeper就是基于Chubby的开源实现.推荐The google stack,Youtube:The Chubby lock service for loosely-coupled distributed systems 《Sinfonia: a new paradigm for building scalable distributed systems》介绍:这篇论文是SOSP2007的Best Paper,阐述了一种构建分布式文件系统的范式方法,个人感觉非常有用。淘宝在构建TFS、OceanBase和Tair这些系统时都充分参考了这篇论文. 《Data-Intensive Text Processing with MapReduce》介绍:Ebook:Data-Intensive Text Processing with MapReduce. 《Design and Implementation of a Query Processor for a Trusted Distributed Data Base Management System》介绍:Design and Implementation of a Query Processor for a Trusted Distributed Data Base Management System. 《Distributed Query Processing》介绍:分布式查询入门. 《Distributed Systems and the End of the API》介绍:分布式系统和api总结. 《Distributed Query Reading》介绍:分布式系统阅读论文,此外还推荐github上面的一个论文列表The Distributed Reader。 《Replication, atomicity and order in distributed systems》介绍:Replication, atomicity and order in distributed systems 《MIT course:Distributed Systems》介绍:2015年MIT分布式系统课程主页,这次用Golang作为授课语言。6.824 Distributed Systems课程主页 《Distributed systems for fun and profit》介绍:免费分布式系统电子书。 《Ori:A Secure Distributed File System》介绍:斯坦福开源的分布式文件系统。 《Availability in Globally Distributed Storage Systems》介绍:Google论文:设计一个高可用的全球分布式存储系统。 《Calvin: Fast Distributed Transactions For Partitioned Database Systems》介绍:对于分区数据库的分布式事务处理。 《Distributed Systems Building Block: Flake Ids》介绍:Distributed Systems Building Block: Flake Ids. 《Introduction to Distributed System Design》介绍:Google Code University课程,如何设计一个分布式系统。 《Sheepdog: Distributed Storage System for KVM》介绍:KVM的分布式存储系统. 《Readings in Distributed Systems Systems》介绍:分布式系统课程列表,包括数据库、算法等. 《Tera》介绍:来自百度的分布式表格系统. 《Distributed systems: for fun and profit》介绍:分布式系统的在线电子书. 《Distributed Systems Reading List》介绍:分布式系统资料,此外还推荐Various articles about distributed systems. 《Designs, Lessons and Advice from Building Large Distributed Systems》介绍:Designs, Lessons and Advice from Building Large Distributed Systems. 《Testing a Distributed System》介绍:Testing a distributed system can be trying even under the best of circumstances. 《The Google File System》介绍: 基于普通服务器构建超大规模文件系统的典型案例,主要面向大文件和批处理系统, 设计简单而实用。 GFS是google的重要基础设施, 大数据的基石, 也是Hadoop HDFS的参考对象。 主要技术特点包括: 假设硬件故障是常态(容错能力强), 64MB大块, 单Master设计,Lease/链式复制, 支持追加写不支持随机写. 《Bigtable: A Distributed Storage System for Structured Data》介绍:支持PB数据量级的多维非关系型大表, 在google内部应用广泛,大数据的奠基作品之一 , Hbase就是参考BigTable设计。 Bigtable的主要技术特点包括: 基于GFS实现数据高可靠, 使用非原地更新技术(LSM树)实现数据修改, 通过range分区并实现自动伸缩等.中文版 《PacificA: Replication in Log-Based Distributed Storage Systems》介绍:面向log-based存储的强一致的主从复制协议, 具有较强实用性。 这篇文章系统地讲述了主从复制系统应该考虑的问题, 能加深对主从强一致复制的理解程度。 技术特点: 支持强一致主从复制协议, 允许多种存储实现, 分布式的故障检测/Lease/集群成员管理方法. 《Object Storage on CRAQ, High-throughput chain replication for read-mostly workloads》介绍:分布式存储论文:支持强一直的链式复制方法, 支持从多个副本读取数据,实现code. 《Finding a needle in Haystack: Facebook’s photo storage》介绍:Facebook分布式Blob存储,主要用于存储图片. 主要技术特色:小文件合并成大文件,小文件元数据放在内存因此读写只需一次IO. 《Windows Azure Storage: A Highly Available Cloud Storage Service with Strong Consistency》介绍: 微软的分布式存储平台, 除了支持类S3对象存储,还支持表格、队列等数据模型. 主要技术特点:采用Stream/Partition两层设计(类似BigTable);写错(写满)就封存Extent,使得副本字节一致, 简化了选主和恢复操作; 将S3对象存储、表格、队列、块设备等融入到统一的底层存储架构中. 《Paxos Made Live – An Engineering Perspective》介绍:从工程实现角度说明了Paxo在chubby系统的应用, 是理解Paxo协议及其应用场景的必备论文。 主要技术特点: paxo协议, replicated log, multi-paxo.参考阅读:关于Paxos的历史 《Dynamo: Amazon’s Highly Available Key-Value Store》介绍:Amazon设计的高可用的kv系统,主要技术特点:综和运用一致性哈希,vector clock,最终一致性构建一个高可用的kv系统, 可应用于amazon购物车场景.新内容来自分布式存储必读论文 《Efficient Replica Maintenance for Distributed Storage Systems》介绍:分布式存储系统中的副本存储问题. 《PADS: A Policy Architecture for Distributed Storage Systems》介绍:分布式存储系统架构. 《The Chirp Distributed Filesystem》介绍:开源分布式文件系统Chirp,对于想深入研究的开发者可以阅读文章的相关Papers. 《Time, Clocks, and the Ordering of Events in a Distributed System》介绍:经典论文分布式时钟顺序的实现原理. 《Making reliable distributed systems in the presence of sodware errors》介绍:面向软件错误构建可靠的分布式系统,中文笔记. 《MapReduce: Simplified Data Processing on Large Clusters》介绍:MapReduce:超大集群的简单数据处理. 《Distributed Computer Systems Engineering》介绍:麻省理工的分布式计算课程主页,里面的ppt和阅读列表很多干货. 《The Styx Architecture for Distributed Systems》介绍:分布式系统Styx的架构剖析. 《What are some good resources for learning about distributed computing? Why?》介绍:Quora上面的一个问答:有哪些关于分布式计算学习的好资源. 《RebornDB: The Next Generation Distributed Key-Value Store》介绍:下一代分布式k-v存储数据库. 《Operating System Concepts Ninth Edition》介绍:分布式系统归根结底还是需要操作系统的知识,这是耶鲁大学的操作系统概念书籍首页,里面有提供了第8版的在线电子版和最新的学习操作系统指南,学习分布式最好先学习操作系统. 《The Log: What every software engineer should know about real-time data's unifying abstraction》介绍:分布式系统Log剖析,非常的详细与精彩. 中文翻译 | 中文版笔记. 《Operating Systems Study Guide》介绍:分布式系统基础之操作系统学习指南. 《分布式系统领域经典论文翻译集》介绍:分布式系统领域经典论文翻译集. 《Maintaining performance in distributed systems》介绍:分布式系统性能维护. 《Computer Science from the Bottom Up》介绍:计算机科学,自底向上,小到机器码,大到操作系统内部体系架构,学习操作系统的另一个在线好材料. 《Operating Systems: Three Easy Pieces》介绍:<操作系统:三部曲>在线电子书,虚拟、并发、持续. 《Database Systems: reading list》介绍:数据库系统经典论文阅读列,此外推送github上面的db reading. 《Unix System Administration》介绍:Unix System Administration ebook. 《The Amoeba Distributed Operating System》介绍:分布式系统经典论文. 《Principles of Computer Systems》介绍:计算机系统概念,以分布式为主.此外推荐Introduction to Operating Systems笔记 《Person page of EMİN GÜN SİRER》介绍:推荐康奈尔大学的教授EMİN GÜN SİRER的主页,他的研究项目有分布式,数据存储。例如HyperDex数据库就是他的其中一个项目之一. 《Scalable, Secure, and Highly Available Distributed File Access》介绍:来自卡内基梅隆如何构建可扩展的、安全、高可用性的分布式文件系统,其他papers. 《Distributed (Deep) Machine Learning Common》介绍:分布式机器学习常用库. 《The Datacenter as a Computer》介绍:介绍了如何构建仓储式数据中心,尤其是对于现在的云计算,分布式学习来说很有帮助.本书是Synthesis Lectures on Computer Architecture系列的书籍之一,这套丛书还有 《The Memory System》,《Automatic Parallelization》,《Computer Architecture Techniques for Power Efficiency》,《Performance Analysis and Tuning for General Purpose Graphics Processing Units》,《Introduction to Reconfigurable Supercomputing》,Memory Systems Cache, DRAM, Disk 等 《helsinki:Distributed Systems Course slider》介绍:来自芬兰赫尔辛基的分布式系统课程课件:什么是分布式,复制,一致性,容错,同步,通信. 《TiDB is a distributed SQL database》介绍:分布式数据库TiDB,Golang开发. 《S897: Large-Scale Systems》介绍:课程资料:大规模系统. 《Large-scale L-BFGS using MapReduce》介绍:使用MapReduce进行大规模分布式集群环境下并行L-BFGS. 《Twitter是如何构建高性能分布式日志的》介绍:Twitter是如何构建高性能分布式日志的. 《Distributed Systems: When Limping Hardware Is Worse Than Dead Hardware》介绍:在分布式系统中某个组件彻底死了影响很小,但半死不活(网络/磁盘),对整个系统却是毁灭性的. 《Tera - 高性能、可伸缩的结构化数据库》介绍:来自百度的分布式数据库. 《SequoiaDB is a distributed document-oriented NoSQL Database》介绍:SequoiaDB分布式文档数据库开源. 《Readings in distributed systems》介绍:这个网址里收集了一堆各TOP大学分布式相关的课程. 《Paxos vs Raft》介绍:这个网站是Raft算法的作者为教授Paxos和Raft算法做的,其中有两个视频链接,分别讲上述两个算法.参考阅读:关于Paxos的历史 《A Scalable Content-Addressable Network》介绍:A Scalable Content-Addressable Network. 《500 Lines or Less》介绍:这个项目其实是一本书( The Architecture of Open Source Applications)的源代码附录,是一堆大牛合写的. 《MIT 6.824 Distributed System》介绍:这只是一个课程主页,没有上课的视频,但是并不影响你跟着它上课:每一周读两篇课程指定的论文,读完之后看lecture-notes里对该论文内容的讨论,回答里面的问题来加深理解,最后在课程lab里把所看的论文实现。当你把这门课的作业刷完后,你会发现自己实现了一个分布式数据库. 《HDFS-alike in Go》介绍:使用go开发的分布式文件系统. 《What are some good resources for learning about distributed computing? Why?》介绍:Quora上关于学习分布式的资源问答. 《SeaweedFS is a simple and highly scalable distributed file system》介绍:SeaweedFS是使用go开发的分布式文件系统项目,代码简单,逻辑清晰. 《Codis - yet another fast distributed solution for Redis》介绍:Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 Codis Proxy 和连接原生的 Redis Server 没有明显的区别 《Paper: Coordination Avoidance In Distributed Databases By Peter Bailis》介绍:Coordination Avoidance In Distributed Databases. 《从零开始写分布式数据库》介绍:本文以TiDB 源码为例. 《what we talk about when we talk about distributed systems》介绍:分布式系统概念梳理,为分布式系统涉及的主要概念进行了梳理. 《Distributed locks with Redis》介绍:使用Redis实现分布式锁. 《CS244b: Distributed Systems》介绍: 斯坦福2014年秋季分布式课程. 《RAMP Made Easy》介绍: 分布式的“读原子性”. 《Strategies and Principles of Distributed Machine Learning on Big Data》介绍: 大数据分布式机器学习的策略与原理. 《Distributed Systems: What is the CAP theorem?》介绍: 分布式CAP法则. 《How should I start to learn distributed storage system as a beginner?》介绍: 新手如何步入分布式存储系统. 《Cassandra - A Decentralized Structured Storage System》介绍: 分布式存储系统Cassandra剖析,推荐白皮书Introduction to Apache Cassandra. 《What is the best resource to learn about distributed systems?》介绍: 分布式系统学习资源. 《What are some high performance TCP hacks?》介绍: 一些高性能TCP黑客技巧. 《Maintaining performance in distributed systems》介绍:分布式系统性能提升. 《A simple totally ordered broadcast protocol》介绍:Benjamin Reed 和 Flavio P.Junqueira 所著论文,对Zab算法进行了介绍,zab算法是Zookeeper保持数据一致性的核心,在国内有很多公司都使用zookeeper做为分布式的解决方案.推荐与此相关的一篇文章ZooKeeper’s atomic broadcast protocol: Theory and practice. 《zFS - A Scalable Distributed File System Using Object Disk》介绍:可扩展的分布式文件系统ZFS,The Zettabyte File System,End-to-end Data Integrity for File Systems: A ZFS Case Study. 《A Distributed Haskell for the Modern Web》介绍:分布式Haskell在当前web中的应用. 《Reasoning about Consistency Choices in Distributed Systems》介绍:POPL2016的论文,关于分布式系统一致性选择的论述,POPL所接受的论文,github上已经有人整理. 《Paxos Made Simple》介绍:Paxos让分布式更简单.译文.参考阅读:关于Paxos的历史,understanding Paxos part1,Understanding Paxos – Part 2.Quora: What is a simple explanation of the Paxos algorithm?,Tutorial Summary: Paxos Explained from Scratch,Paxos algorithm explained, part 1: The essentials,Paxos algorithm explained, part 2: Insights 《Consensus Protocols: Paxos》介绍:分布式系统一致性协议:Paxos.参考阅读:关于Paxos的历史 《Consensus on Transaction Commit》介绍:事务提交的一致性探讨. 《The Part-Time Parliaments》介绍:在《The Part-Time Parliament》中描述了基本协议的交互过程。在基本协议的基础上完善各种问题得到了最终的议会协议。 为了让人更容易理解《The Part-Time Parliament》中描述的Paxos算法,Lamport在2001发表了《Paxos Made Simple》,以更平直的口头语言描述了Paxos,而没有包含正式的证明和数学术语。《Paxos Made Simple》中,将算法的参与者更细致的划分成了几个角色:Proposer、Acceptor、Learner。另外还有Leader和Client.参考阅读:关于Paxos的历史 《Paxos Made Practical》介绍:看这篇论文时可以先看看理解Paxos Made Practical. 《PaxosLease: Diskless Paxos for Leases》介绍:PaxosLease:实现租约的无盘Paxos算法,译文. 《Paxos Made Moderately Complex》介绍:Paxos算法实现,译文,同时推荐42 Paxos Made Moderately Complex. 《Hadoop Reading List》介绍:Hadoop学习清单. 《Hadoop Reading List》介绍:Hadoop学习清单. 《2010 NoSQL Summer Reading List》介绍:NoSQL知识清单,里面不仅仅包含了数据库阅读清单还包含了分布式系统资料. 《Raft: Understandable Distributed Consensus》介绍:Raft可视化图帮助理解分布式一致性 《Etcd:Distributed reliable key-value store for the most critical data of a distributed system》介绍:Etcd分布式Key-Value存储引擎 《Understanding Availability》介绍:理解peer-to-peer系统中的可用性究竟是指什么.同时推荐基于 Peer-to-Peer 的分布式存储系统的设计 《Process structuring, synchronization, and recovery using atomic actions》介绍:经典论文 《Programming Languages for Parallel Processing》介绍:并行处理的编程语音 《Analysis of Six Distributed File Systems》介绍:此篇论文对HDFS,MooseFS,iRODS,Ceph,GlusterFS,Lustre六个存储系统做了详细分析.如果是自己研发对应的存储系统推荐先阅读此篇论文 《A Survey of Distributed File Systems》介绍:分布式文件系统综述 《Concepts of Concurrent Programming》介绍:并行编程的概念,同时推荐卡内基梅隆FTP 《Concurrency Control Performance Modeling:Alternatives and Implications》介绍:并发控制性能建模:选择与意义 《Distributed Systems - Concepts and Design 5th Edition》介绍:ebook分布式系统概念与设计 《分布式系统设计的形式方法》介绍:分布式系统设计的形式方法 《互斥和选举算法》介绍:互斥和选举算法 《Actors:A model Of Concurrent Cornputation In Distributed Systems》介绍:经典论文 《Security Engineering: A Guide to Building Dependable Distributed Systems》介绍:如何构建一个安全可靠的分布式系统,About the Author,Bibliography:文献资料,章节访问把链接最后的01换成01-27即可 《15-712 Advanced and Distributed Operating Systems》介绍:卡内基梅隆大学的分布式系统博士生课程主页,有很丰富的资料 《Dapper, Google's Large-Scale Distributed Systems Tracing Infrastructure》介绍:Dapper,大规模分布式系统的跟踪系统,译文,译文对照 《CS262a: Advanced Topics in Computer Systems》介绍:伯克利大学计算机系统进阶课程,内容有深度,涵盖分布式,数据库等内容 《Egnyte Architecture: Lessons Learned In Building And Scaling A Multi Petabyte Distributed System》介绍:PB级分布式系统构建/扩展经验 《CS162: Operating Systems and Systems Programming》介绍:伯克利大学计算机系统课程:操作系统与系统编程 《MDCC: Multi-Data Center Consistency》介绍:MDCC主要解决跨数据中心的一致性问题中间件,一种新的协议 《Research at Google:Distributed Systems and Parallel Computing》介绍:google公开对外发表的分布式系统与并行计算论文 《HDFS Architecture Guide》介绍:分布式文件系统HDFS架构 《ActorDB distributed SQL database》介绍:分布式 Key/Value数据库 《An efficient data location protocol for self-organizing storage clusters》介绍:是著名的Ceph的负载平衡策略,文中提出的几种策略都值得尝试,比较赞的一点是可以对照代码体会和实践,如果你还需要了解可以看看Ceph:一个 Linux PB 级分布式文件系统,除此以外,论文的引用部分也挺值得阅读的,同时推荐Ceph: A Scalable, High-Performance Distributed File System 《A Self-Organizing Storage Cluster for Parallel Data-Intensive Applications》介绍:Surrento的冷热平衡策略就采用了延迟写技术 《HBA: Distributed Metadata Management for Large Cluster-Based Storage Systems》介绍:对于分布式存储系统的元数据管理. 《Server-Side I/O Coordination for Parallel File Systems》介绍:服务器端的I/O协调并行文件系统处理,网络,文件存储等都会涉及到IO操作.不过里面涉及到很多技巧性的思路在实践时需要斟酌 《Distributed File Systems: Concepts and Examples》介绍:分布式文件系统概念与应用 《CSE 221: Graduate Operating Systems》介绍:加利福尼亚大学的研究生操作系统课程主页,论文很值得阅读 《S4: Distributed Stream Computing Platform》介绍:Yahoo出品的流式计算系统,目前最流行的两大流式计算系统之一(另一个是storm),Yahoo的主要广告计算平台 《Pregel: a system for large-scale graph processing》介绍:Google的大规模图计算系统,相当长一段时间是Google PageRank的主要计算系统,对开源的影响也很大(包括GraphLab和GraphChi) 《GraphLab: A New Framework for Parallel Machine Learning》介绍:CMU基于图计算的分布式机器学习框架,目前已经成立了专门的商业公司,在分布式机器学习上很有两把刷子,其单机版的GraphChi在百万维度的矩阵分解都只需要2~3分钟; 《F1: A Distributed SQL Database That Scales》介绍:这篇论文是Google 2013年发表的,介绍了F1的架构思路,13年时就开始支撑Google的AdWords业务,另外两篇介绍文章F1 - The Fault-Tolerant Distributed RDBMS Supporting Google's Ad Business .Google NewSQL之F1 《Cockroach DB:A Scalable, Survivable, Strongly-Consistent SQL Database》介绍:CockroachDB :一个可伸缩的、跨地域复制的,且支持事务的数据存储,InfoQ介绍,Design and Architecture of CockroachDb 《Multi-Paxos: An Implementation and Evaluation》介绍:Multi-Paxos实现与总结,此外推荐Paxos/Multi-paxos Algorithm,Multi-Paxos Example,地址:ftp://ftp.cs.washington.edu/tr/2009/09/UW-CSE-09-09-02.PDF 《Zab: High-performance broadcast for primary-backup systems》介绍:一致性协议zab分析 《A Distributed Hash Table》介绍:分布式哈希算法论文,扩展阅读Introduction to Distributed Hash Tables,Distributed Hash Tables 《Comparing the performance of distributed hash tables under churn》介绍:分布式hash表性能的Churn问题 《Brewer’s Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web》介绍:分布式系统的CAP问题,推荐Perspectives on the CAP Theorem.对CAP理论的解析文章,PODC ppt,A plain english introduction to CAP Theorem,IEEE Computer issue on the CAP Theorem 《F2FS: A New File System for Flash Storage》介绍:闪存存储文件系统F2FS 《Better I/O Through Byte-Addressable, Persistent Memory》介绍:微软发表的关于i/o访问优化论文 《tmpfs: A Virtual Memory File System》介绍:虚拟内存文件系统tmpfs 《BTRFS: The Linux B-tree Filesystem》介绍:Linux B-tree文件系统. 《Akamai technical publication》介绍:Akamai是全球最大的云计算机平台之一,承载了全球15-30%网络流量,如果你是做CDN或者是云服务,这个里面的论文会给你很有帮助.例如这几天看facebook开源的osquery。找到通过db的方式运维,找到Keeping Track of 70,000+ Servers: The Akamai Query System这篇论文,先看论文领会思想,然后再使用工具osquery实践 《BASE: An Acid Alternative》介绍:来自eBay 的解决方案,译文Base: 一种Acid的替代方案,应用案例参考保证分布式系统数据一致性的6种方案 《A Note on Distributed Computing》介绍:Jim Waldo和Sam Kendall等人共同撰写了一篇非常有名的论文“分布式计算备忘录”,这篇论文在Reddit上被人推荐为“每个程序员都应当至少读上两篇”的论文。在这篇论文中,作者表示“忽略本地计算与分布式计算之间的区别是一种危险的思想”,特别指出了Emerald、Argus、DCOM以及CORBA的设计问题。作者将这些设计问题归纳为“三个错误的原则”: “对于某个应用来说,无论它的部署环境如何,总有一种单一的、自然的面向对象设计可以符合其需求。” “故障与性能问题与某个应用的组件实现直接相关,在最初的设计中无需考虑这些问题。” “对象的接口与使用对象的上下文无关”. 《Distributed Systems Papers》介绍:分布式系统领域经典论文列表. 《Consistent Hashing and Random Trees: Distributed Caching Protocols for Relieving Hot Spots on the World Wide Web》介绍:Consistent Hashing算法描述. 《SIGMOD 2016: Accepted Research Papers》介绍:SIGMOD是世界上最有名的数据库会议之一,最具有权威性,收录论文审核非常严格.2016年的SIGMOD 会议照常进行,上面收录了今年SIGMOD收录的论文,把题目输入google中加上pdf就能找到,很多论文值得阅读,SIGMOD 2015 《Notes on CPSC 465/565: Theory of Distributed Systems》介绍:耶鲁大学的分布式系统理论课程笔记 《Distributed Operating System Doc PDF》介绍:分布式系统文档资源(可下载) 《Anatomy of a database system》介绍:数据库系统剖析,这本书是由伯克利大学的Joseph M. Hellerstein和M. Stonebraker合著的一篇论文.对数据库剖析很有深度.除此以外还有一篇文章Architecture of a Database System。数据库系统架构,厦门大学的数据库实验室教授林子雨组织过翻译 《A Relational Model of Data for Large Shared Data Banks》介绍:数据库关系模型论文 《RUC Innovative data systems reaserch lab recommand papers》介绍:中国人民大学数据研究实验室推荐的数据库领域论文 《A Scalable Distributed Information Management System》介绍:构建可扩展的分布式信息管理系统 《Distributed Systems in Haskell》介绍:Haskell中的分布式系统开发 《Large-scale cluster management at Google with Borg》介绍:Google使用Borg进行大规模集群的管理,伯克利大学ppt介绍,中文版 《Lock Free Programming Practice》介绍:并发编程(Concurrency Programming)资料,主要涵盖lock free数据结构实现、内存回收方法、memory model等备份链接 密码: xc5j 《Distributed Algorithms Lecture Notes for 6.852》介绍:Nancy Lynch's的分布式算法研究生课程讲义 《Distributed Algorithms for Topic Models》介绍:分布式算法主题模型. 《RecSys - ACM Recommender Systems》介绍:世界上非常有名的推荐系统会议,我比较推荐接收的PAPER 《All Things Distributed》介绍:推荐一个博客,博主是Amazon CTO Werner Vogels,这是一个关注分布式领域的博客.大部分博文是关于在工业界应用. 《programming, database, distributed system resource list》介绍:这个Git是由阿里(alibaba)的技术专家何登成维护,主要是分布式数据库. 《Making reliable distributed systems in the presence of sodware errors》介绍:Erlang的作者Joe Armstrong撰写的论文,面对软件错误构建可靠的分布式系统.中文译版 《CS 525: Advanced Distributed Systems[Spring 2016]》介绍:伊利诺伊大学的Advanced Distributed Systems 里把各个方向重要papers(updated Spring 2015)列举出来,可以参考一下 《Distributed Algorithms》介绍:这是一本分布式算法电子书,作者是Jukka Suomela.讲述了多个计算模型,一致性,唯一标示,并发等. 《TinyLFU: A Highly Efficient Cache Admission Policy》介绍:当时是在阅读如何设计一个缓存系统时看到的,然后通过Google找到了这一篇关于缓存策略的论文,它是LFU的改良版,中文介绍.如果有兴趣可以看看Golang实现版。结合起来可能会帮助你理解 《6.S897: Large-Scale Systems》介绍:斯坦福大学给研究生开的分布式系统课程。教师是 spark 作者 matei. 能把这些内容真正理解透,分布式系统的功力就很强了。 《学习分布式系统需要怎样的知识?》介绍:[怎么学系列]学习分布式系统需要怎样的知识? 《Distributed systems theory for the distributed systems engineer》介绍:分布式系统工程师的分布式系统理论 《A Distributed Systems Reading List》介绍:分布式系统论文阅读列表 《Distributed Systems Reading Group》介绍:麻省理工大学分布式系统小组,他们会把平时阅读到的优秀论文分享出来。虽然有些论文本页已经收录,但是里面的安排表schedule还是挺赞的 《Scalable Software Architecture》介绍:分布式系统、可扩展性与系统设计相关报告、论文与网络资源汇总. 《MapReduce&Hadoop resource》介绍:MapReduce&Hadoop相关论文,涉及分布式系统设计,性能分析,实践,优化等多个方面 《Distributed Systems: Principles and Paradigms(second edtion)》介绍:分布式系统原理与范型第二版,课后解答 《Distributed Systems Seminar's reading list for Spring 2017》介绍:分布式系统研讨会论文阅读列表 《A Critique of the CAP Theorem》介绍:这是一篇评论CAP定理的论文,学习CAP很有帮助,推荐阅读评论文章"A Critique of the CAP Theorem" 《Evolving Distributed Systems》介绍:推荐文章不断进化的分布式系统.

suonayi 2019-12-02 03:17:27 0 浏览量 回答数 0

回答

回 3楼(莫有) 的帖子 您好, 请问您使用的系统是哪种Linux发行版呢?是CentOS 6吗? ------------------------- 回 5楼(莫有) 的帖子 您好, 好的,等我找到合适的测试机,再为您在CentOS7 系统里测试ipv6的隧道设置喔。 ------------------------- 回 5楼(莫有) 的帖子 您好, 为您写了这个CentOS 7的配置帖子,希望对您有帮助喔: https://bbs.aliyun.com/read.php?tid=285557 ------------------------- 回 10楼(非洲小犀牛) 的帖子 您好, 如果您的是Linux系统,可能需要先为系统启用ipv6的功能喔。请看这里的例子: https://bbs.aliyun.com/read/285557.html ------------------------- 回 12楼(猎马网) 的帖子 您好, 欢迎来到阿里云论坛。 IPv6测试不能通过的原因是什么呢?您在 http://ipv6-test.com/validate.php 里测试您的站点访问结果是什么呢? ------------------------- 回 14楼(猎马网) 的帖子 您好, 如本例中的,添加IPv6隧道地址的默认网关命令,应该是: netsh interface ipv6 add route ::/0 IP6Tunnel 2001:470:18:401::1 请问,您在做第5步时,是否有运行如上边类似的命令吗? ------------------------- 回 16楼(猎马网) 的帖子 您好, 您可以查看“网络连接”里对应的连接属性,估计可以直接修改的哩。 ------------------------- 回 19楼(猎马网) 的帖子 您好, 我在测试机里使用wget测试,好象正常: root@los:~/test4# wget -6 http://www.iliema.com/ converted 'http://www.iliema.com/' (ANSI_X3.4-1968) -> 'http://www.iliema.com/' (UTF-8) --2016-08-11 22:28:41--   http://www.iliema.com/ Resolving www.iliema.com (www.iliema.com)... 2001:470:1f14:b5f::2 Connecting to www.iliema.com (www.iliema.com)|2001:470:1f14:b5f::2|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 77636 (76K) [text/html] Saving to: 'index.html.3' ------------------------- 回 20楼(猎马网) 的帖子 您好, 应该可以如IPv4那样,多个域名指到相同的IPv6地址。 ------------------------- 回 24楼(很快) 的帖子 您好, 请问您的nginx web是安装在Windows还是Linux的系统上? ------------------------- 回 26楼(喵咪喵) 的帖子 您好, 欢迎来到阿里云论坛。 申请到IPv6的隧道地址后,还需要在系统里配置的,以让这个IPv6的地址能被外网的用户访问到喔。 ------------------------- 回 29楼(不断学习) 的帖子 您好, 请问您使用的操作系统是WIndows 2012吗? 请问您执行的netsh命令是和操作说明那里一样的吗? ------------------------- 回 31楼(喵咪喵) 的帖子 您好, 应该不影响,如果前两项检查测试通过,最后一条(IPv6-only)测试不通过,应该是可以的。 ------------------------- 回 34楼(wolfing5210) 的帖子 您好, 我在Linux系统上,能ping通您的IPv6地址: root@los:~# ping6 2001:470:35:102a::2 PING 2001:470:35:102a::2(2001:470:35:102a::2) 56 data bytes 64 bytes from 2001:470:35:102a::2: icmp_seq=1 ttl=119 time=225 ms 64 bytes from 2001:470:35:102a::2: icmp_seq=2 ttl=119 time=226 ms 如果您要测试,要具备两个条件, a. 在Windows系统里,应该是使用 ping -6 的参数 b. 发出测试的系统是启用了IPv6 ------------------------- 回 37楼(小成123456) 的帖子 您好, 抱歉延时回复。 请问您在系统里,执行 ipconfig /all 后,能看到输出信息中包含的ipv6 tunel信息吗? ------------------------- 回 39楼(呢你) 的帖子 您好, 抱歉给您带来不便。 请问苹果审核拒绝的原因是什么,是不能连接到ipv6地址吗? 请问您创建的ipv6隧道地址,测试时能从外网成功访问吗? ------------------------- 回 41楼(呢你) 的帖子 您好, 80端口测试是正常的,但好象web返回了错误。 建议您咨询一下您的 APP 程序员。 root@los:~/test# curl [2001:470:18:95c::2] -so - | grep -iPo '(?<=<title>)(.*)(?=</title>)' J BossWeb/2.0.1.GA - Error report ------------------------- 回 44楼(nyanko桑) 的帖子 您好, 那请问您在例子中,第5步执行的命令是哪些呢? ------------------------- 回 45楼(小成123456) 的帖子 您好, 域名AAAA解析与IPv6隧道地址设置并不直接相关,如果您的IPv6隧道地址设置正确,从外网应该能ping通这个新设置的IPv6隧道地址。 ------------------------- 回 48楼(nyanko桑) 的帖子 您好, 好象命令看起来没有问题,您是从 HE 隧道地址设置网站里直接复制的,对吗? 那执行命令时,是否回显的结果是“确定”,还是有别的错误信息提示呢? ------------------------- 回 50楼(持名) 的帖子 您好, 那就奇怪了。 建议您回过头梳理一下,看看是否缺了哪个步骤或环境有哪些特殊的地方。 ------------------------- 回 52楼(nyanko桑) 的帖子 您好, 或许将原命令中的“add”(添加)改为“del”(删除)后,可以试试。  我个人猜测的。 ------------------------- 回 54楼(nyanko桑) 的帖子 您好, 好哩,到时如还没有解决问题,可通过站内信,发来临时的ECS登录信息,我为您看看喔。 ------------------------- 回 56楼(nyanko桑) 的帖子 您好, 申请到的IPv6隧道地址是不变的呀,除非您删除了。 ------------------------- 回 58楼(nyanko桑) 的帖子 您好, 好哩,祝愿您的APP能通过苹果的审核。 如还有疑问,欢迎跟帖。 ------------------------- 回 60楼(゛温ゝ先生) 的帖子 您好, 您在站内信里提到说“网络有重名”,现在系统里没成功添加ipv6地址吗? ------------------------- 回 61楼(陈cc123) 的帖子 您好, 一般AAA记录里,主机记录填写的是从HE申请到的IPv6隧道地址。 更新:应该是“记录值”里填写从he申请到的ipv6隧道地址。 ------------------------- 回 65楼(陈cc123) 的帖子 您好, 对不起,之前我的说法有错误。 按阿里云解析面板中,“主机记录”应该是您需要设置的网站访问地址,如我这里想设置 ipv6.anqun.org 的ipv6地址,“主机记录”里填写“ipv6”,而“记录值”里填写IPv6隧道地址:2001:470:18:401::2 ------------------------- 回 67楼(陈cc123) 的帖子 您好, 那请问您提交给 http://ipv6-test.com/ 测试的网址是什么呢? ------------------------- 回 69楼(陈cc123) 的帖子 您好, 页面 http://ipv6-test.com/validate.php 里提交的网址应该是一个域名网址,应该不能直接提交IPv6地址去测试的喔。 您可以在您的域名控制面板添加一条AAA记录的呀。 ------------------------- 回 72楼(陈cc123) 的帖子 您好, 能否使用如 netstat -noa | grep 80 的命令,来查看当前Web服务是否在ipv6地址监听使用呢? ------------------------- 回 74楼(陈cc123) 的帖子 您好, 图中没有显示IPv6相关的8080端口使用情况喔, 或许您可以运行 netstat -noa | grep 8080 再次确认一下。 ------------------------- 回 78楼(陈cc123) 的帖子 您好, 是的,不好意思,我忘记了您的系统是Windows,不是linux,所以不能直接用grep的命令。 现在从外网测试,您的tomcat站点是可以从ipv6地址访问了,但或许您将web从8080换到常用的80端口,方便访问。 root@los:~/test# curl [2001:470:18:ab3::2]:8080 -so - | grep -iPo '(?<=<title>)(.*)(?=</title>)' Apache Tomcat/7.0.54 ------------------------- 回 80楼(陈cc123) 的帖子 您好, 如果您提交给苹果审核就是带8080的IPv6地址,那可保持现状。 能否说一下具体您审核网址?如果按上边的测试结果来看,您的IPv6隧道地址是(曾)正常工作。 ------------------------- 回 82楼(陈cc123) 的帖子 您好, 现在从外网测试您给的网址,正常。 root@los:~/test# curl -6 'http://www.91mcgj.cn:8080' -so - | grep -iPo '(?<=<title>)(.*)(?=</title>)' Apache Tomcat/7.0.54 root@los:~/test# curl 'http://www.91mcgj.cn:8080' -so - | grep -iPo '(?<=<title>)(.*)(?=</title>)' Apache Tomcat/7.0.54 ------------------------- 回 84楼(陈cc123) 的帖子 您好, 可能那个检测的站点,只能检测默认80端口的吧,具体到您这里,您是要写明8080端口的,所以那个测试网址可能不适用喔。 ------------------------- 回 87楼(xiaopao888) 的帖子 您好, 欢迎来到阿里云论坛。 能否请问在“命令提示符”里执行以下的命令,看输出结果有没有关于ipv6的80地址监听呢? netstat -noa | find "80" ------------------------- 回 88楼(莫尼玛) 的帖子 您好, 欢迎来到阿里云论坛。 如果您使用自己的环境来测试,需要确认您的环境是否支持ipv6使用环境喔,如您的telnet程序是否支持ipv6,您的网络是否支持ipv6。 我拿一个美国的vps来测试,也是可以成功连接到您的ipv6隧道地址: root@los:~/test# curl [2001:470:18:aa8::2] -so - | grep -iPo '(?<=<title>)(.*)(?=</title>)' Microsoft Internet Information Services 8 ------------------------- 回 91楼(xiaopao888) 的帖子 您好, 如果web没有在iPv6的网络接口上监听,请尝试调整一下web的配置文件喔,如让它在所有的可用网络接口里监听。 ------------------------- 回 93楼(莫尼玛) 的帖子 您好, 请问您在tcp 8300里提供的服务是web的吗? 如果是web服务,测试不成功喔: root@los:~# curl [2001:470:18:aa8::2:8300] -so - | grep -iPo '(?<=<title>)(.*)(?=</title>)' root@los:~# ------------------------- 回 97楼(莫尼玛) 的帖子 您好, 好象用telnet测试8300 tcp 端口,不成功喔: root@los:~# telnet -6 2001:470:18:aa8::2 8300 Trying 2001:470:18:aa8::2... telnet: Unable to connect to remote host: Connection refused root@los:~# telnet -6 2001:470:18:aa8::2 80 Trying 2001:470:18:aa8::2... Connected to 2001:470:18:aa8::2. Escape character is '^]'. Connection closed by foreign host. ------------------------- 回 100楼(莫尼玛) 的帖子 您好, 如果您的socket程序默认不是在所有的端口上监听使用,是需要调整一下的喔。 或您使用 netstat -noa 的命令,查看一下都有哪些8300的端口在使用。 ------------------------- 回 102楼(莫尼玛) 的帖子 您好, 0.0.0.0 可能代表是IPv4的所有网络接口,不包括IPv6的啊。 请看这个云友以下的这个贴图,最后一行代表是IPv6的所有网络接口: ------------------------- 回 105楼(莫尼玛) 的帖子 您好, 好的,请稍等。 8310可以,8300也可以。 root@los:~# telnet -6 ht.yulesy.cn 8310 Trying 2001:470:18:aa8::2... Connected to ht.yulesy.cn. Escape character is '^]'. root@los:~# telnet -6 ht.yulesy.cn 8300 Trying 2001:470:18:aa8::2... Connected to ht.yulesy.cn. Escape character is '^]'. ------------------------- 回 109楼(涛涛~) 的帖子 您好, 如果您需要通过http访问位于两个不同服务器上的文件,或许是需要为这两个服务器都配置ipv6隧道地址喔。 ------------------------- 回 110楼(陌祥伟) 的帖子 您好, 我现在没测试机,不能具体为您查看输出结果, 您用 ipconfig 查看到的信息页面内容是怎么样的呢? ------------------------- 回 113楼(陌祥伟) 的帖子 您好, 请问您提到的“本地ping和telnet端口是通的”,是ping ipv6和telnet ipv6隧道地址都正常吗? ------------------------- 回 115楼(陌祥伟) 的帖子 您好, 我这里为您测试,也是ping6不通, 或许您需要再检查一下是否有防火墙或其它缺漏的环节没留意到: --- 2001:470:23:70d::2 ping statistics --- 65 packets transmitted, 0 received, 100% packet loss, time 64000ms ------------------------- 回 119楼(leyuwei) 的帖子 您好, 请问您的ipv6隧道地址是 2001:470:18:ecc::2 吗? 我从外网测试,返回是403的错误页: root@los:~# wget -6 http://[2001:470:18:ecc::2]:8080 converted 'http://[2001:470:18:ecc::2]:8080' (ANSI_X3.4-1968) -> 'http://[2001:470:18:ecc::2]:8080' (UTF-8) --2017-01-07 01:27:05--  http://[2001:470:18:ecc::2]:8080/ Connecting to [2001:470:18:ecc::2]:8080... connected. HTTP request sent, awaiting response... 403 Forbidden 2017-01-07 01:27:09 ERROR 403: Forbidden. root@los:~# curl -6 'http://www.dlmunews.club:8080' <p align='center'>▒▒▒▒▒▒▒▒▒▒▒▒ַ▒▒▒▒▒޲▒ϣ▒▒▒▒▒▒ô▒▒▒▒▒▒▒▒°ɣ▒</p> <p align='center'>▒▒▒▒▒ִ▒▒▒▒ˣ▒▒▒▒▒▒޾▒Ҫ▒▒ȡһЩ▒ֶ▒▒ˣ▒</p> <br/> <p align='center'>403 FORBIDDEN</p> <p align='center'>▒▒▒▒▒▒˼▒▒▒▒▒▒▒뿴▒▒▒ҵ▒▒▒▒ӣ▒</p>root@los:~# ------------------------- 回 118楼(陌祥伟) 的帖子 您好, 我去找个Windows 2008的系统为您测试一下喔。 请等待。 ------------------------- Re:回 118楼(陌祥伟) 的帖子 您好, 我找个测试机(用的是Windows 2008 SP2 32位中文版公共镜像),重复操作了一次,好象正常哩: C:\Users\Administrator>netsh interface ipv6 show interface Idx  Met   MTU   状态          名称 ---  ---  -----  -----------  -------------------   1   50 4294967295  connected    Loopback Pseudo-Interface 1 15   10   1280  connected    IP6Tunnel 10   10   1500  connected    本地连接 22   50   1280  disconnected  本地连接* 12 23   50   1280  disconnected  本地连接* 13 11   10   1500  connected    本地连接 2 C:\Users\Administrator>ping -6 2001:470:18:401::2 正在 Ping 2001:470:18:401::2 从 2001:470:18:401::2 具有 32 字节的数据: 来自 2001:470:18:401::2 的回复: 时间<1ms 来自 2001:470:18:401::2 的回复: 时间<1ms 2001:470:18:401::2 的 Ping 统计信息:     数据包: 已发送 = 2,已接收 = 2,丢失 = 0 (0% 丢失), 往返行程的估计时间(以毫秒为单位):     最短 = 0ms,最长 = 0ms,平均 = 0ms Control-C ^C C:\Users\Administrator>ping -6 ipv6.google.com 正在 Ping ipv6.l.google.com [2404:6800:4008:800::200e] 从 2001:470:18:401::2 具 有 32 字节的数据: 来自 2404:6800:4008:800::200e 的回复: 时间=401ms 来自 2404:6800:4008:800::200e 的回复: 时间=400ms ------------------------- 回 122楼(leyuwei) 的帖子 您好, 在我使用的测试机里,能访问到您提供的网址内容喔,祝您通过APP的IPv6审核。 root@los:~/test# curl -6 'http://www.dlmunews.club:8080/dlmunews/test.html' test IPV6root@los:~/test# ------------------------- 回 125楼(陌祥伟) 的帖子 您好, 抱歉没有留意您的ECS网络类型, 弹性公网IP,看介绍说是一种NatIP,我不确定这与“经典网络”里的公网IP是否有一些使用限制情景, 建议您发工单咨询一下阿里云官方工程师: https://workorder.console.aliyun.com/ 本帖里的例子ECS是“经典网络”,并不是“专有网络”或“弹性公网IP”的使用场景喔。 ------------------------- 回 131楼(dearvitamin) 的帖子 您好, 测试得知,经典网络中的站点可以,专用网络中的站点不可以访问到喔。 root@los:~/test# curl -6 'http://www.spl258.com' -so - | grep -iPo '(?<=<title>)(.*)(?=</title>)' 斯普林游戏 root@los:~/test# curl -6 'http://www.longm258.com' -so - | grep -iPo '(?<=<title>)(.*)(?=</title>)' ------------------------- 回 133楼(vinny1024) 的帖子 您好, 欢迎来到阿里云论坛。 本例子里的Web是IIS,并不是apache喔。 请问您在apache的配置文件里,已经设置监听使得ipv6的地址和端口了吗? ------------------------- 回 136楼(raolan123) 的帖子 您好, 已有的云友反馈,不能按例子中的方法在”专有网络“中成功设置ipv6隧道地址。 ------------------------- 回 138楼(ekuns) 的帖子 您好, 欢迎来到阿里云论坛。 操作步骤,Windows 2012和Windows 2008应该是大致相同的。 请问您是否曾按帖子里的步骤,在Windows 2008里测试了呢? 如果您在Windows 2008里测试失败,我为您找个测试机来实践一下喔。 ------------------------- 回 140楼(poplanchong) 的帖子 您好, 如果是ipv6-only,可能还需要DNS解析之类支持的。 ------------------------- 回 142楼(poplanchong) 的帖子 您好, 欢迎来到阿里云论坛。 如果可以ping通ipv6的隧道地址,那么说明配置应该是成功的。 但如果您设置ipv6隧道地址目的是为了通过苹果的APP审核,还是要看苹果公司的判断结果喔。 祝您成功。 ------------------------- 回 144楼(poplanchong) 的帖子 您好, 很高兴听到您的APP已经通过苹果公司的审核。 我没有向苹果公司提交过APP审核,并没有实践的经验。所以我也不确定为什么苹果公司先后不同审核结果的原因。 您前后向苹果公司提交过几个网址用于审核? ------------------------- 回 146楼(没办法抽奖) 的帖子 您好, 我在测试机里, 可以ping通您提到的网关,但您的隧道地址ping不通喔, 是不是哪一步没有操作完整? root@los:~/test5# ping6 2001:470:1f04:a9e::2 PING 2001:470:1f04:a9e::2(2001:470:1f04:a9e::2) 56 data bytes --- 2001:470:1f04:a9e::2 ping statistics --- 41 packets transmitted, 0 received, 100% packet loss, time 39999ms root@los:~/test5# ping6 2001:470:1f04:a9e::1 PING 2001:470:1f04:a9e::1(2001:470:1f04:a9e::1) 56 data bytes 64 bytes from 2001:470:1f04:a9e::1: icmp_seq=1 ttl=56 time=53.5 ms 64 bytes from 2001:470:1f04:a9e::1: icmp_seq=2 ttl=56 time=53.8 ms ------------------------- 回 147楼(poplanchong) 的帖子 您好,   如此,我也不确定具体的原因了。不过,APP审核通过了,终究是件好事,是不是呢? ------------------------- 回 150楼(没办法抽奖) 的帖子 晚上好, 请问您的ECS操作系统是Windows 2012的吗? ------------------------- 回 152楼(l_zhaowei) 的帖子 您好, 请问您新购的ECS实例带宽类型是“专有网络”的吗? ------------------------- 回 153楼(l_zhaowei) 的帖子 您好, 暂时没有在“专有网络”实现IPv6隧道地址的方案喔,抱歉。 ------------------------- 回 157楼(鸿儒网络) 的帖子 您好, 看您的截图,或许需要先着重看一下,为什么“80端口不显示IPV6”, 请问您的站点绑定属性中,是否有IPv6的地址可以选择使用呢? ------------------------- 回 159楼(aeria) 的帖子 您好, 欢迎来到阿里云论坛。 请问您运行 netstat 的命令,可以查看到tomcat在ipv6的80端口上也有监听使用吗? ------------------------- 回 161楼(aeria) 的帖子 您好, 能贴一下您的tomcat配置文件 server.xml 的内容吗(监听那个环节的)? ------------------------- 回 164楼(aeria) 的帖子 您好, 或许您可以查看一下这个问答里提到的“authbind”: http://serverfault.com/questions/605684/tomcat-java-not-listening-on-ipv6 ------------------------- 回 167楼(aeria) 的帖子 您好, 那我去找个测试机,为您测试一下。 您的环境,是Windows 2012 + Tomcat 8 吗? ------------------------- 回 170楼(aeria) 的帖子 您好, 为您写了这个帖子,不知道是否对您有用: 《用ipv6隧道地址访问tomcat 站点内容》 - https://bbs.aliyun.com/read/312055.html ------------------------- 回 172楼(bingo_vc) 的帖子 您好, 欢迎来到阿里云论坛。 如果您的站点不需要域名访问,直接用ipv6隧道地址访问,应该也是可以的喔。 ------------------------- 回 174楼(clks) 的帖子 您好, 现在为您测试,可以访问得到页面喔: --2017-04-09 06:25:52--   http://www.meihaojiawodecheng.cn/ Resolving www.meihaojiawodecheng.cn (www.meihaojiawodecheng.cn)... 2001:470:18:352::2, 116.62.37.108 Connecting to www.meihaojiawodecheng.cn (www.meihaojiawodecheng.cn)|2001:470:18:352::2|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 2241 (2.2K) [text/html] Saving to: 'index.html.3' ------------------------- 回 176楼(clks) 的帖子 您好, 在浏览器里,输入如 http://[2001:470:18:352::2]/ 的地址后,应该就能显示到站点内容了,有时可能需要刷新多几下。 ------------------------- 回 178楼(自由2017) 的帖子 您好, 抱歉延时回复。 请问您的ECS实例带宽类型是哪种,是“经典网络”还是“专有网络”呢? ------------------------- 回 179楼(l_zhaowei) 的帖子 您好, 如果ECS实例是“专有网络”的,或许可以参考这个帖子里的例子试试喔: https://bbs.aliyun.com/read/312196.html ------------------------- 回 182楼(l_zhaowei) 的帖子 您好, 有“经典网络”的选项,据云友们反馈,好象一些较早之前注册和使用的阿里云账户还可以在新购的ECS配置里选择“经典网络”的网络类型。 ------------------------- 回 183楼(lbmjsls) 的帖子 您好, 欢迎来到阿里云论坛。 是的,可以,您可以用一个已经有ICP备案的子域名来操作,如果您认为不会对您的业务带来负面影响的话。 ------------------------- 回 186楼(l_zhaowei) 的帖子 您好, 目前收到的反馈来看,并不是所有的阿里云账号可以选购到“经典网络”。 我并不清楚阿里云的具体购物车规则哩。 ------------------------- 回 188楼(自由2017) 的帖子 您好, 如果ECS实例是“专有网络”的,或许可以参考这个帖子里的例子试试喔: https://bbs.aliyun.com/read/312196.html ------------------------- 回 190楼(自由2017) 的帖子 您好, 已经站内信您喔。 ------------------------- 回 192楼(lbmjsls) 的帖子 您好, 都可以ping通,但返回的延时可能有些高。 root@los:~/test5# ping6 thls.qian178.com PING thls.qian178.com(lbmjsls-1-pt.tunnel.tserv20.hkg1.ipv6.he.net) 56 data bytes 64 bytes from lbmjsls-1-pt.tunnel.tserv20.hkg1.ipv6.he.net: icmp_seq=1 ttl=121 time=624 ms 64 bytes from lbmjsls-1-pt.tunnel.tserv20.hkg1.ipv6.he.net: icmp_seq=2 ttl=121 time=622 ms --- thls.qian178.com ping statistics --- 3 packets transmitted, 2 received, 33% packet loss, time 2000ms rtt min/avg/max/mdev = 622.017/623.254/624.492/1.467 ms root@los:~/test5# ping6 qian178.com PING qian178.com(lbmjsls-2-pt.tunnel.tserv20.hkg1.ipv6.he.net) 56 data bytes 64 bytes from lbmjsls-2-pt.tunnel.tserv20.hkg1.ipv6.he.net: icmp_seq=2 ttl=121 time=564 ms 64 bytes from lbmjsls-2-pt.tunnel.tserv20.hkg1.ipv6.he.net: icmp_seq=3 ttl=121 time=563 ms ------------------------- 回 194楼(龙阁商务) 的帖子 您好, 欢迎来到阿里云论坛。 如果前两项测试通,那就可以了呀。 您是对哪里还不满意呢? ------------------------- 回 196楼(龙阁商务) 的帖子 您好, 苹果审核不限次数的吧? 期待您的审核结果喔。 ------------------------- 回 198楼(cloud_lee) 的帖子 您好, 在国外的IPv6环境中的服务器为您测试IPv6访问,是可以的喔: --2017-04-17 07:40:56--   http://www.zxwol.com/ Resolving www.zxwol.com (www.zxwol.com)... 2001:470:18:5cf::2 Connecting to www.zxwol.com (www.zxwol.com)|2001:470:18:5cf::2|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 135046 (132K) [text/html] Saving to: 'index.html.15' ------------------------- 回 204楼(龙阁商务) 的帖子 您好, 现在测试,可以访问喔。 --2017-04-18 03:48:45--   http://myjcb.hqzh168.com/ Resolving myjcb.hqzh168.com (myjcb.hqzh168.com)... 2001:470:a:ba4::2 Connecting to myjcb.hqzh168.com (myjcb.hqzh168.com)|2001:470:a:ba4::2|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 34431 (34K) [text/html] Saving to: 'index.html.16' ------------------------- 回 206楼(hsy-ios) 的帖子 您好, 欢迎来到阿里云论坛。 现在看起来,您的ipv6隧道地址可以ping得通喔: PING 2001:470:18:600::2(2001:470:18:600::2) 56 data bytes 64 bytes from 2001:470:18:600::2: icmp_seq=1 ttl=121 time=557 ms 64 bytes from 2001:470:18:600::2: icmp_seq=2 ttl=121 time=567 ms 64 bytes from 2001:470:18:600::2: icmp_seq=3 ttl=121 time=574 ms ------------------------- 回 208楼(hsy-ios) 的帖子 您好, 请问是哪个ipv6地址呢? ------------------------- 回 210楼(hsy-ios) 的帖子 您好, --2017-04-20 22:41:23--  http://[2001:470:18:600::2]/ Connecting to [2001:470:18:600::2]:80... connected. HTTP request sent, awaiting response... 301 Moved Permanently Location: https://m.wnchebao.com/ [following] converted 'https://m.wnchebao.com/' (ANSI_X3.4-1968) -> 'https://m.wnchebao.com/' (UTF-8) --2017-04-20 22:41:24--   https://m.wnchebao.com/ Resolving m.wnchebao.com (m.wnchebao.com)... 2001:470:18:600::2 Connecting to m.wnchebao.com (m.wnchebao.com)|2001:470:18:600::2|:443... connected. HTTP request sent, awaiting response... 404 Not Found 2017-04-20 22:41:27 ERROR 404: Not Found. ------------------------- 回 212楼(鸿儒网络) 的帖子 您好, 感谢您的经验分享喔。 如有更多的用户遇到类似的“延迟生效”现象,将添加相应的提示信息喔。 ------------------------- 回 214楼(北极星图图) 的帖子 您好, 如果tomcat没有在ipv6的网络地址上监听,您可以详细查看一下tomcat的配置文件喔, 这里有一个例子可以参考一下: https://bbs.aliyun.com/read/312055.html ------------------------- 回 215楼(潘飞虎) 的帖子 您好, 测试的话,您的ipv6隧道地址可以ping通,但ipv6的80连接超时,建议检查web服务的配置喔: PING 2001:470:18:6ae::2(2001:470:18:6ae::2) 56 data bytes 64 bytes from 2001:470:18:6ae::2: icmp_seq=1 ttl=121 time=564 ms 64 bytes from 2001:470:18:6ae::2: icmp_seq=2 ttl=121 time=565 ms --- 2001:470:18:6ae::2 ping statistics --- 3 packets transmitted, 2 received, 33% packet loss, time 1999ms rtt min/avg/max/mdev = 564.291/565.080/565.870/1.090 ms root@los:~/test5# wget -6 http://[2001:470:18:6ae::2] converted 'http://[2001:470:18:6ae::2]' (ANSI_X3.4-1968) -> 'http://[2001:470:18:6ae::2]' (UTF-8) --2017-04-26 14:02:36--  http://[2001:470:18:6ae::2]/ Connecting to [2001:470:18:6ae::2]:80... failed: Connection timed out. Retrying. ------------------------- 回 216楼(hzyt) 的帖子 您好, 欢迎来到阿里云论坛。 请问您ECS实例带宽类型是哪种呢,是“专有网络”吗? ------------------------- 回 220楼(潘飞虎) 的帖子 您好, 请问您的apache配置文件,如 httpd.conf 中,是否有监听ipv6的网络地址呢(如[::])? ------------------------- 回 221楼(永超科技) 的帖子 您好, 请问是否您多次运行了相同的netsh配置命令呢? ------------------------- 回 224楼(beijixingtu) 的帖子 您好, 现在访问您的站点,在ipv6访问中,应该是可以看到内容(或许是部分)的: ------------------------- 回 226楼(四眼鱼) 的帖子 您好, 抱歉延时回复, 请问您的ECS实例使用提“经典网络”的网络类型吗? ------------------------- 回 228楼(这是高科技) 的帖子 您好, 因为目前阿里云的“专有网络”类型的ECS实例限制,不能成功配置和使用6in4的IPv6隧道地址的。 使用外部的IPv6地址的VPS,虽然可以尝试,但也不一定能100%解决苹果APP上架的困扰。 ------------------------- 回 229楼(潘飞虎) 的帖子 您好, 可能还需要看具体的原因,苹果有没有具体说是因为什么而拒绝呢?还是因为IPv6的访问可用性吗? IPv6的DNS并不是必须的,如果您也想设置IPv6的DNS,可以参考这个帖子:《用HE提供的免费DNS解析服务通过IPv6 DNS检测》 - https://bbs.aliyun.com/read/313524.html? ------------------------- 回 233楼(潘飞虎) 的帖子 您好, 嗯,或许您还可以具体说说,中国目前的公共互联网还没有实现IPv6,所以对于中国的APP很为难。 ------------------------- 回 234楼(beijixingtu) 的帖子 您好, 是的,如果可以,可以附上说明,目前中国的公共互联网没有实现IPv6,一般用户无法直接在IPv6的环境里完成完整测试。 ------------------------- 回 237楼(潘飞虎) 的帖子 您好, 苹果要求目前国内还没有完整布置的IPv6环境,是有些让普通人摸不着头脑。 那您现在的工作环境中,有具备测试条件吗?如Mac电脑和苹果手机。 ------------------------- 回 239楼(潘飞虎) 的帖子 您好, 文档中提到,即使是用Mac模拟ipv6的网络,但带宽的出口还是ipv4的。 或许您可以尝试建一个可访问ipv6的wifi环境试试,如网上看到有一些无线路由器或许可以“独特”地构建出来。 ------------------------- 回 240楼(xunchengweidao) 的帖子 您好, 欢迎来到阿里云论坛。 或许您当前使用的nginx没有编译对ipv6的支持喔。 ------------------------- 回 244楼(feng_li) 的帖子 您好, 欢迎来到阿里云论坛。 很乐意,为您ping6测试: PING www.ymygo.com(wsbl-1-pt.tunnel.tserv22.tyo1.ipv6.he.net) 56 data bytes 64 bytes from wsbl-1-pt.tunnel.tserv22.tyo1.ipv6.he.net: icmp_seq=1 ttl=121 time=430 ms 64 bytes from wsbl-1-pt.tunnel.tserv22.tyo1.ipv6.he.net: icmp_seq=2 ttl=121 time=429 ms 64 bytes from wsbl-1-pt.tunnel.tserv22.tyo1.ipv6.he.net: icmp_seq=3 ttl=121 time=430 ms 64 bytes from wsbl-1-pt.tunnel.tserv22.tyo1.ipv6.he.net: icmp_seq=4 ttl=121 time=430 ms ------------------------- 回 246楼(feng_li) 的帖子 您好, 现在再次测试,还是能ping得通。 配置了ipv6的隧道地址,仅是说您的系统(服务器)可以通过隧道地址交换ipv6的数据,如能ping6通或浏览ipv6的网站。但这并不代表着您的APP一定可以支持ipv6的访问喔。建议您再对照着苹果对于APP的 IPv6 设计指导,看看是否有其它原因: https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html PING www.ymygo.com(wsbl-1-pt.tunnel.tserv22.tyo1.ipv6.he.net) 56 data bytes 64 bytes from wsbl-1-pt.tunnel.tserv22.tyo1.ipv6.he.net: icmp_seq=1 ttl=121 time=434 ms 64 bytes from wsbl-1-pt.tunnel.tserv22.tyo1.ipv6.he.net: icmp_seq=2 ttl=121 time=434 ms ------------------------- 回 248楼(爱爱莫能助) 的帖子 您好, 欢迎来到阿里云论坛。 在系统里配置ipv6的命令在he的站点上有提供现成的喔。 ------------------------- 回 251楼(天下才子) 的帖子 您好, 为您查看,现在可以在浏览器里看到内容喔: ------------------------- 回 255楼(居然要昵称) 的帖子 您好, 欢迎来到阿里云论坛。 请问,如 ping ::1  会有哪些信息提示呢? ------------------------- 回 254楼(天下才子) 的帖子 您好, 请问您家里的宽带是哪家的呢,是中国电信的吗? ------------------------- 回 259楼(新飞) 的帖子 您好, 最后一项检测的对象是ipv6 dns server,这是与域名的解析DNS地址相关, 如果您需要,可能需要将域名的DNS地址更改为国外支持ipv6的。 ------------------------- 回 260楼(robin_tian) 的帖子 您好, 欢迎来到阿里云论坛, 看起来,http可以访问喔(但首页会提示404出错): converted 'http://api2.ihyoo.com' (ANSI_X3.4-1968) -> 'http://api2.ihyoo.com' (UTF-8) --2017-05-15 16:03:04--   http://api2.ihyoo.com/ Resolving api2.ihyoo.com (api2.ihyoo.com)... 2001:470:18:d6::2 Connecting to api2.ihyoo.com (api2.ihyoo.com)|2001:470:18:d6::2|:80... connected. HTTP request sent, awaiting response... 404 Not Found 2017-05-15 16:03:06 ERROR 404: Not Found. ------------------------- 回 264楼(天下才子) 的帖子 您好, 如果在您的电脑上不能访问ipv6的网站,可以尝试通过这个在线网站测试一下(可能要用代理): www.ipv6proxy.net ------------------------- 回 267楼(jsrabbit) 的帖子 您好, 欢迎来到阿里云论坛。 看您的几个截图,出现了两个IPv6地址,2001:da8:20d:400::8be0:dd58 和 2001:470:18:b5::2, 如果 2001:470:18:b5::2 是正确的,现在测试是可以访问到80端口端的喔: converted 'http://[2001:470:18:b5::2]' (ANSI_X3.4-1968) -> 'http://[2001:470:18:b5::2]' (UTF-8) --2017-05-17 13:50:44--  http://[2001:470:18:b5::2]/ Connecting to [2001:470:18:b5::2]:80... connected. HTTP request sent, awaiting response... 200 OK Length: 107908 (105K) [text/html] Saving to: 'index.html' index.html                       100%[=========================================================>] 105.38K  20.0KB/s   in 5.3s ------------------------- 回 269楼(jsrabbit) 的帖子 您好, 个人觉得 IPv6 DNS Server 设置与否,影响不大。但您有空,也可以换一家支持IPv6的国外DNS商,如 dns.he.net。 ------------------------- 回 270楼(eric984) 的帖子 来自河源的朋友, 欢迎来到阿里云论坛。 如之前有云友提到,将HE提供的示例命令中,将公网IP换成私网IP,或许就可以了喔。 ------------------------- 回 273楼(通通优品) 的帖子 您好, 欢迎来到阿里云论坛。 请问您在HE里提交的IP地址是什么呢? 一般是提交ECS实例的公网IP地址,并不是内网IP地址喔。 ------------------------- 回 275楼(通通优品) 的帖子 您好, 那能否再检查一下您的安全组规则设置呢(有没有过滤80端口)? 如果可以,或许您可以先尝试在规则里开放所有的访问,对比一下结果。 ------------------------- 回 277楼(通通优品) 的帖子 您好, 如果您多次尝试运行命令来绑定ipv6隧道地址,需要确认最后ipv6隧道地址是能从外网ping6通的喔,同时可以查看一下路由表是否正确。 ------------------------- 回 280楼(大男人主义) 的帖子 您好, 欢迎来到阿里云论坛。 祝您的APP能成功上架喔。 ------------------------- 回 282楼(仙人掌有刺) 的帖子 您好, 从现在的测试结果来看,好象您的域名AAAA解析没有生效或失败: converted 'http://m.dnanren.cn' (ANSI_X3.4-1968) -> 'http://m.dnanren.cn' (UTF-8) --2017-05-25 10:30:51--   http://m.dnanren.cn/ Resolving m.dnanren.cn (m.dnanren.cn)... failed: Name or service not known. wget: unable to resolve host address 'm.dnanren.cn' ------------------------- 回 284楼(葫芦娃警长) 的帖子 您好, 抱歉给您带来不便。 域名AAAA记录和ipv4的A记录是不互相影响的喔。 如果ping -6 外网的地址不通,那有可能是路由没配置好喔。 ------------------------- 回 287楼(中广巨力) 的帖子 您好, 欢迎来到阿里云论坛。 现在好象我无法ping通您的ipv6隧道地址喔: PING 2001:470:1f10:124::2(2001:470:1f10:124::2) 56 data bytes --- 2001:470:1f10:124::2 ping statistics --- 13 packets transmitted, 0 received, 100% packet loss, time 11997ms ------------------------- 回 290楼(中广巨力) 的帖子 您好, 欢迎来到阿里云论坛。 一般不需要重新申请第二个隧道地址喔。 建议您检查一下ipv6的路由情况。 ------------------------- 回 292楼(中广巨力) 的帖子 您好, 抱歉延时回复。 如果您ping -6 不通隧道地址的网关,可以检查一下ECS实例的安全组是否有限制访问: https://help.aliyun.com/document_detail/25471.html ------------------------- 回 294楼(yan555) 的帖子 您好, 欢迎来到阿里云论坛。 请问您在系统中执行的是哪些命令, 执行命令后,有哪些回显的信息呢? ------------------------- 回 298楼(lsfoo) 的帖子 您好, 欢迎来到阿里云论坛。 例子中是ipv6隧道地址,是需经ipv4传送的,所以,建议您在安全组里允许所有的协议和端口,对比测试一下喔。 ------------------------- 回 300楼(华邦云12138) 的帖子 您好, 提示有重名,有可能是多次执行命令后提示的。 可删除之前添加的,或第二次执行命令时,跳过这一步。 ------------------------- 回 301楼(华邦云12138) 的帖子 您好, 建议您检查实例的安全组规则, 如果可以,建议放行全部的协议和端口: https://help.aliyun.com/document_detail/25471.html ------------------------- 回 305楼(华邦云12138) 的帖子 您好, 抱歉延时回复。 能否截图,看看您的安全组规则呢? ------------------------- 回 306楼(笔墨kk) 的帖子 您好, 欢迎来到阿里云论坛。 在图中看到的信息,虚拟的IPv6网络接口是“断开”状态的喔。 请问您具体执行了哪些命令呢? ------------------------- 回 310楼(笔墨kk) 的帖子 您好, 看命令的内容,是HE网站上提供的。 如果您使用的专有网络,需要注意将命令中的公网IP换成系统的内网IP喔。 ------------------------- 回 312楼(笔墨kk) 的帖子 您好, 可以先试试哩,替换一下IP后试试。 ------------------------- 回 314楼(华邦云12138) 的帖子 您好, 如广东的中国电信用户,应该也可以直接ping -6 的吧, 如现在我尝试的: 正在 Ping 2001:470:18:b07::2 具有 32 字节的数据: 请求超时。 来自 2001:470:18:b07::2 的回复: 时间=994ms 来自 2001:470:18:b07::2 的回复: 时间=996ms 来自 2001:470:18:b07::2 的回复: 时间=959ms 2001:470:18:b07::2 的 Ping 统计信息:     数据包: 已发送 = 4,已接收 = 3,丢失 = 1 (25% 丢失), 往返行程的估计时间(以毫秒为单位):     最短 = 959ms,最长 = 996ms,平均 = 983ms ------------------------- 回 317楼(笔墨kk) 的帖子 您好, 创建IPv6隧道地址时,是需要提交公网IP的喔。 只不过,是在创建好隧道地址后的命令中,替换喔。 ------------------------- 回 320楼(笔墨kk) 的帖子 您好, 很高兴听到您已经在系统中成功配置了ipv6隧道地址。 ------------------------- 回 322楼(笔墨kk) 的帖子 您好, 这个需要满足一些条件的,如您家里用来ping的系统是什么呢,有没有启用ipv6?您家里的路由器是否支持ipv6? 如在我自己的电脑里能ping -6 通您的隧道地址: 正在 Ping yongchun.gosob.com [2001:470:18:cce::2] 具有 32 字节的数据: 来自 2001:470:18:cce::2 的回复: 时间=3291ms 请求超时。 来自 2001:470:18:cce::2 的回复: 时间=676ms 来自 2001:470:18:cce::2 的回复: 时间=913ms ------------------------- 回 321楼(miazhang) 的帖子 您好, 欢迎来到阿里云论坛。 现在从外网的机子测试,能ping6通您的隧道地址喔。 论坛在Chrome和Firefox里,是无法上传图片,但如UC可以。 PING 2001:470:18:b61::2(2001:470:18:b61::2) 56 data bytes 64 bytes from 2001:470:18:b61::2: icmp_seq=1 ttl=121 time=610 ms 64 bytes from 2001:470:18:b61::2: icmp_seq=2 ttl=121 time=602 ms 64 bytes from 2001:470:18:b61::2: icmp_seq=3 ttl=121 time=601 ms 64 bytes from 2001:470:18:b61::2: icmp_seq=4 ttl=121 time=602 ms ------------------------- 回 326楼(笔墨kk) 的帖子 您好, 嗯,一般情况来说,能ping -6 得通ipv6隧道地址,那说明您的设置生效了喔。 如果不信,那可以重装ECS系统后,再ping -6 一下,看能否通。 ------------------------- 回 328楼(笔墨kk) 的帖子 您好, 好哩,祝您的APP上架成功喔。 ------------------------- 回 329楼(miazhang) 的帖子 您好, 请问执行以下命令,会有什么样的显示结果呢? netstat -noa | find ":80" ------------------------- 回 333楼(miazhang) 的帖子 您好, 如果这是全部的信息输出, 是喔,您的Web服务没有在ipv6的网络接口上监听使用喔。 ------------------------- 回 334楼(leodoo) 的帖子 您好, 欢迎来到阿里云论坛。 1. HE的隧道地址是6in4,好象是理解为将ipv6的数据包通过ipv4来传送。如果您的应用服务需要使用ipv6地址来通讯,是需要在ipv6的网络接口上监听 3. 从外网测试,可以访问您的站点喔: converted 'http://5656k.com' (ANSI_X3.4-1968) -> 'http://5656k.com' (UTF-8) --2017-06-15 10:24:13--   http://5656k.com/ Resolving 5656k.com (5656k.com)... 2001:470:18:cf4::2 Connecting to 5656k.com (5656k.com)|2001:470:18:cf4::2|:80... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Saving to: 'index.html.5' ------------------------- Re:回 338楼(miazhang) 的帖子 您好, 如果是 dig,应该是dig域名而不是网址吧? ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46629 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ; www.xueshupa.net.              IN      AAAA ;; ANSWER SECTION: www.xueshupa.net.       600     IN      AAAA    2001:470:18:b61::2 ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 25716 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ; http://www.xueshupa.net.       IN      AAAA ;; Query time: 5013 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) ;; WHEN: Thu Jun 15 23:22:35 CST 2017 ;; MSG SIZE  rcvd: 52 ------------------------- 回 340楼(超级蜜蜂) 的帖子 您好, 欢迎来到阿里云论坛。 现在我测试,可以喔: --2017-06-20 21:20:37--   https://www.zgzbsc.vip/Diamond/frontgoods/index Resolving www.zgzbsc.vip (www.zgzbsc.vip)... 2001:470:18:1141::2 Connecting to www.zgzbsc.vip (www.zgzbsc.vip)|2001:470:18:1141::2|:443... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Saving to: 'index' ------------------------- 回 342楼(miazhang) 的帖子 您好, 抱歉听到您的APP被苹果拒审, 如在开始讨论的,苹果并不要求APP服务器一定要有IPv6的地址,但强调APP软件本身要使用ipv6-only的设计规范,如要使用域名来引用地址,要使用新的函数,不能将ipv4的地址写死,等等。 建议您下一步的排查重心放在APP软件本身上。 ------------------------- 回 344楼(超级蜜蜂) 的帖子 您好, 抱歉听到您的APP被苹果拒审, 如在开始讨论的,苹果并不要求APP服务器一定要有IPv6的地址,但强调APP软件本身要使用ipv6-only的设计规范,如要使用域名来引用地址,要使用新的函数,不能将ipv4的地址写死,等等。 建议您下一步的排查重心放在APP软件本身上。 ------------------------- 回 347楼(hornsun.tech) 的帖子 您好, 欢迎来到阿里云论坛。 服务器 执行 netstat -nao | find "80"时 没看到有[::]:80端 -> 请问您有没检查Web的设置,是否有监听使用ipv6的地址呢? 按照提示,安全组规则也增加了公网的入网规则 -> 请问您添加的规则是怎么样的呢? ------------------------- 回 348楼(24k壮士) 的帖子 您好, 欢迎来到阿里云论坛。 现在测试,不能ping6通您的隧道地址喔。 ING zgzzhds.com(AyinAy7-1-pt.tunnel.tserv25.sin1.ipv6.he.net) 56 data bytes --- zgzzhds.com ping statistics --- 12 packets transmitted, 0 received, 100% packet loss, time 10997ms ------------------------- 回 351楼(很赞) 的帖子 您好, 欢迎来到阿里云论坛。 是的,因为SLB的服务器用户不能配置隧道地址,而ECS是在SLB后边。 ------------------------- 回 353楼(很赞) 的帖子 您好, 按苹果的指导文档来看,要求的是APP软件本身能兼容ipv6-only的网络环境,并不是要求APP服务器有ipv6的地址。 所以,重心应该是在app软件本身的设计和构建上哩。 ------------------------- 回 355楼(aaa.a) 的帖子 您好, 欢迎来到阿里云论坛。 现在测试,可以ping得通喔: PING 2001:470:35:7ee::2(2001:470:35:7ee::2) 56 data bytes 64 bytes from 2001:470:35:7ee::2: icmp_seq=1 ttl=120 time=555 ms 64 bytes from 2001:470:35:7ee::2: icmp_seq=2 ttl=120 time=555 ms 64 bytes from 2001:470:35:7ee::2: icmp_seq=3 ttl=120 time=555 ms ------------------------- 回 357楼(miazhang) 的帖子 您好, ipv6 dns server,请参考这个例子:《用HE提供的免费DNS解析服务通过IPv6 DNS检测》 - https://bbs.aliyun.com/read/313524.html? ------------------------- 回 359楼(xl_young) 的帖子 您好, 欢迎来到阿里云论坛。 请问您的实例安全组是否允许所以协议通过呢? ------------------------- 回 361楼(xl_young) 的帖子 您好, 能否截图看看安全组规则的内容? ------------------------- 您好,欢迎来到阿里云论坛。可以ping6通,wget返回404错误信息:--2017-08-01 12:24:03--  http://api.qingyun100.com/Resolving api.qingyun100.com (api.qingyun100.com)... 2001:470:18:490::2, 139.196.40.67Connecting to api.qingyun100.com (api.qingyun100.com)|2001:470:18:490::2|:80... connected.HTTP request sent, awaiting response... 404 Not Found2017-08-01 12:24:03 ERROR 404: Not Found. ------------------------- 回 365楼(菜鸟017) 的帖子 您好, 欢迎来到阿里云论坛。 从外围的服务器来测试的话,提示403禁止访问喔: --2017-08-09 09:35:44--   http://tangxianqipai1.zai0312.com:90/ Resolving tangxianqipai1.zai0312.com (tangxianqipai1.zai0312.com)... 2001:470:18:695::2 Connecting to tangxianqipai1.zai0312.com (tangxianqipai1.zai0312.com)|2001:470:18:695::2|:90... connected. HTTP request sent, awaiting response... 403 Forbidden 2017-08-09 09:35:45 ERROR 403: Forbidden. ------------------------- 回 368楼(菜鸟017) 的帖子 您好, 当时,我是使用境外的IPv6机子来为您测试的喔。 ------------------------- 回 369楼(菜鸟017) 的帖子 您好, 这个可能是测试时,所使用的DNS域名服务器不支持ipv6吧。 一般这个不太紧要的,因为国内的DNS服务器,一般没有IPv6地址的,除非您使用国外的。 ------------------------- 回 372楼(菜鸟017) 的帖子 您好, 目前的情况,可能阿里云没有为ECS配置可公众访问的IPv6地址呢。 阿里云的公共DNS服务器,目前好象也没有IPv6地址。 ------------------------- 回 374楼(菜鸟017) 的帖子 您好, 如果是在Windows 2012,删除之前存在的“ip6tunnel”虚拟接口, 或许可以试试以下这个命令: netsh int ipv6 delete interface "ip6tunnel" ------------------------- 回 377楼(菜鸟017) 的帖子 您好, 很高兴听到您已经解决了问题, 有空时,请多来阿里云论坛逛逛喔。 ------------------------- 回 380楼(sheldonlin) 的帖子 您好, 欢迎来到阿里云论坛。 能否贴出您在Windows里执行的命令? ------------------------- 您好,可能需要检查web服务是否也在ipv6的网络地址里监听80端口: --2017-08-20 09:37:23--  (try: 2)   http://kambuzz.com/ Connecting to kambuzz.com (kambuzz.com)|2001:470:18:8f2::2|:80... failed: Connection re fused. liujia@hk2:~/test6$ ping6 2001:470:18:8f2::2 PING 2001:470:18:8f2::2(2001:470:18:8f2::2) 56 data bytes 64 bytes from 2001:470:18:8f2::2: icmp_seq=1 ttl=127 time=311 ms 64 bytes from 2001:470:18:8f2::2: icmp_seq=2 ttl=127 time=310 ms ------------------------- 回 386楼(sheldonlin) 的帖子 您好, 是的。 好象没有80端口的监听使用情况喔。 执行以下的命令,再看看: netstat -noa | find ":80" ------------------------- 回 388楼(sheldonlin) 的帖子 您好, 您是想让您的站点能从ipv6的网络里访问到页面内容吗? 从您的命令输出结果来看,好象并没有web进程喔。 关于苹果对于ipv6-only的要求,请看这个指导文档: https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html#//apple_ref/doc/uid/TP40010220-CH213-SW1 ------------------------- 回 391楼(sheldonlin) 的帖子 您好, 那您在运行tomcat后,执行 netstat -noa | find ":8080" 后,有哪些输出结果呢? ------------------------- 回 394楼(sheldonlin) 的帖子 您好, 请尝试检查实例的安全组规则,看是否有阻止外网访问8080端口: https://help.aliyun.com/document_detail/25471.html ------------------------- 回 398楼(sheldonlin) 的帖子 您好, 总结得不错。 现在测试,是可以从外网的ipv6测试机访问的: liujia@hk2:~/test6$ wget -6 kambuzz.com:8080 --2017-08-21 10:51:58--   http://kambuzz.com:8080/ Resolving kambuzz.com (kambuzz.com)... 2001:470:18:8f2::2 Connecting to kambuzz.com (kambuzz.com)|2001:470:18:8f2::2|:8080... connected. HTTP request sent, awaiting response... 200 Length: unspecified [text/html] index.html: Permission denied 如果您的实例是Linux系统的,建议在后台长驻运行一个ping6的命令,如 ping6 ipv6.google.com ,以让您的ipv6隧道地址保持激活的状态,避免如20分钟后ipv6隧道地址ping6不通。 ------------------------- 回 400楼(sheldonlin) 的帖子 您好, 有时您的IPv6隧道地址ping不通, 在ping通时,可以访问到页面的内容,如: ------------------------- 回 402楼(sheldonlin) 的帖子 您好, 不确定具体的原因,但您可以尝试更换到其它的中转服务器,如美国的,看看会不会比目前的香港好些。 ------------------------- 回 405楼(sheldonlin) 的帖子 您好, ping6了几分钟后,可以ping通了。 liujia@hk2:~$ ping6 2001:470:c:67a::2 PING 2001:470:c:67a::2(2001:470:c:67a::2) 56 data bytes 64 bytes from 2001:470:c:67a::2: icmp_seq=232 ttl=123 time=313 ms 64 bytes from 2001:470:c:67a::2: icmp_seq=233 ttl=123 time=313 ms 64 bytes from 2001:470:c:67a::2: icmp_seq=234 ttl=123 time=313 ms 64 bytes from 2001:470:c:67a::2: icmp_seq=235 ttl=123 time=313 ms 64 bytes from 2001:470:c:67a::2: icmp_seq=236 ttl=123 time=315 ms 64 bytes from 2001:470:c:67a::2: icmp_seq=237 ttl=123 time=387 ms 64 bytes from 2001:470:c:67a::2: icmp_seq=238 ttl=123 time=387 ms --- 2001:470:c:67a::2 ping statistics --- 238 packets transmitted, 7 received, 97% packet loss, time 238848ms rtt min/avg/max/mdev = 313.431/335.021/387.851/33.233 ms ------------------------- 回 407楼(sheldonlin) 的帖子 您好, 测试的ping值差不多喔: PING 2001:470:18:94d::2(2001:470:18:94d::2) 56 data bytes 64 bytes from 2001:470:18:94d::2: icmp_seq=1 ttl=127 time=325 ms 64 bytes from 2001:470:18:94d::2: icmp_seq=2 ttl=127 time=325 ms 64 bytes from 2001:470:18:94d::2: icmp_seq=3 ttl=127 time=325 ms 64 bytes from 2001:470:18:94d::2: icmp_seq=4 ttl=127 time=325 ms 64 bytes from 2001:470:18:94d::2: icmp_seq=5 ttl=127 time=325 ms ------------------------- 回 409楼(觅约) 的帖子 您好, 欢迎来到阿里云论坛。 现在测试,访问正常喔: liujia@hk2:~/test6$ wget -6 app.miyueta.com:9088 --2017-08-28 18:25:36--   http://app.miyueta.com:9088/ Resolving app.miyueta.com (app.miyueta.com)... 2001:19f0:6001:213:5400:ff:fe77:5183 Connecting to app.miyueta.com (app.miyueta.com)|2001:19f0:6001:213:5400:ff:fe77:5183|:9088... connected. HTTP request sent, awaiting response... 200 OK Length: 52 [text/html] ------------------------- Re:回 411楼(ios——ot) 的帖子 您好, 我现在从外网为您ping6测试,可ping通,但有丢包。 liujia@hk2:~$ ping6 admin.allti.com.cn PING admin.allti.com.cn(wbnahqs-1-pt.tunnel.tserv25.sin1.ipv6.he.net) 56 data bytes 64 bytes from wbnahqs-1-pt.tunnel.tserv25.sin1.ipv6.he.net: icmp_seq=4 ttl=124 time=566 ms 64 bytes from wbnahqs-1-pt.tunnel.tserv25.sin1.ipv6.he.net: icmp_seq=5 ttl=124 time=545 ms 64 bytes from wbnahqs-1-pt.tunnel.tserv25.sin1.ipv6.he.net: icmp_seq=13 ttl=124 time=539 ms --- admin.allti.com.cn ping statistics --- 16 packets transmitted, 3 received, 81% packet loss, time 15087ms rtt min/avg/max/mdev = 539.496/550.382/566.125/11.400 ms ------------------------- 回 415楼(ios——ot) 的帖子 您好, 有可能。换别的中转服务器,如美国的来对比看看。 ------------------------- 回 437楼(卡乐) 的帖子 版主回复: 没看到相应的安全性评估。 个人想,是这样的:如果您的数据传送开始时,已经是加密的,如https,那隧道转发的服务器也不能读取到数据内容吧? 且,隧道转发的服务商,he.net应该是一家有信誉的公司。 再者,这里的隧道地址设置,目的是帮助APP上架,如果您的APP上架后,可停用隧道地址。 ------------------------- 回 439楼(卡乐) 的帖子 版主回复: 反方向操作哩,如在系统里禁用/删除隧道地址(如netsh int ipv6 delete interface "ip6tunnel")。 ------------------------- 回 443楼(阿凯十三郎) 的帖子 版主回复: 或许您需要检查一下ECS实例的安全组,看是放行了ipv6隧道地址服务器的访问。 目前测试来看,您的ipv6隧道地址从外网是ping6不通的。 --2018-01-25 10:41:07--   http://www.cjnmw.xyz/ Resolving www.cjnmw.xyz (www.cjnmw.xyz)... 2001:470:18:f02::2 Connecting to www.cjnmw.xyz (www.cjnmw.xyz)|2001:470:18:f02::2|:80... failed: Connection timed out. Retrying. liujia@hk2:~/test7$ ping6 2001:470:18:f02::2 PING 2001:470:18:f02::2(2001:470:18:f02::2) 56 data bytes --- 2001:470:18:f02::2 ping statistics --- 21 packets transmitted, 0 received, 100% packet loss, time 20154ms liujia@hk2:~/test7$ ping6 2001:470:18:f02::1 PING 2001:470:18:f02::1(2001:470:18:f02::1) 56 data bytes 64 bytes from 2001:470:18:f02::1: icmp_seq=1 ttl=64 time=1.41 ms 64 bytes from 2001:470:18:f02::1: icmp_seq=2 ttl=64 time=1.40 ms --- 2001:470:18:f02::1 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 1.404/1.409/1.415/0.037 ms ------------------------- 回 448楼(阿凯十三郎) 的帖子 版主回复: 从您的ECS实例能ping通隧道地址服务器的IP,但不代表从隧道地址的服务器能ping通(访问)您的ECS实例喔。 ------------------------- 回 449楼(阿凯十三郎) 的帖子 版主回复: 是哩,看起来,外网已经能通过隧道地址访问到您的apache里了。 您调整了ECS实例的安全组规则吗? ------------------------- 回 452楼(阿凯十三郎) 的帖子 版主回复: 据网友反馈:域名本身的 ipv6 DNS Server 并不重要。 ------------------------- 回 455楼(纪念青春) 的帖子 版主回复: 请试试: netsh int ipv6 delete interface "ip6tunnel" ------------------------- 回 458楼(老黄000001) 的帖子 您好, 图中信息,显示IPv6隧道地址断开状态, 请问您在之前配置隧道地址的命令中,包含的IP是ECS实例的公网IP还是内网IP? 一般来说,应该在命令中写内网IP的,即您图中的看到的172.18.132.2 ------------------------- 回 460楼(尜淇专版) 的帖子 您好, 在He.net里申请隧道地址时,请填写ECS实例的公网IP地址喔。 ------------------------- 回 462楼(潮约) 的帖子 您好, 使用VPC网络的ECS实例,在配置隧道地址时,是需要绑定内网IP,因为公网IP不是在系统里。 如果配置隧道地址时,绑定了内网IP,也无法正常使用的话,建议检查ECS实例安全组规则或Windows防火墙,如将隧道地址服务器的IPv4加到白名单中。

dongshan8 2019-12-02 02:58:04 0 浏览量 回答数 0

回答

回 3楼(莫有) 的帖子 您好, 请问您使用的系统是哪种Linux发行版呢?是CentOS 6吗? ------------------------- 回 5楼(莫有) 的帖子 您好, 好的,等我找到合适的测试机,再为您在CentOS7 系统里测试ipv6的隧道设置喔。 ------------------------- 回 5楼(莫有) 的帖子 您好, 为您写了这个CentOS 7的配置帖子,希望对您有帮助喔: https://bbs.aliyun.com/read.php?tid=285557 ------------------------- 回 10楼(非洲小犀牛) 的帖子 您好, 如果您的是Linux系统,可能需要先为系统启用ipv6的功能喔。请看这里的例子: https://bbs.aliyun.com/read/285557.html ------------------------- 回 12楼(猎马网) 的帖子 您好, 欢迎来到阿里云论坛。 IPv6测试不能通过的原因是什么呢?您在 http://ipv6-test.com/validate.php 里测试您的站点访问结果是什么呢? ------------------------- 回 14楼(猎马网) 的帖子 您好, 如本例中的,添加IPv6隧道地址的默认网关命令,应该是: netsh interface ipv6 add route ::/0 IP6Tunnel 2001:470:18:401::1 请问,您在做第5步时,是否有运行如上边类似的命令吗? ------------------------- 回 16楼(猎马网) 的帖子 您好, 您可以查看“网络连接”里对应的连接属性,估计可以直接修改的哩。 ------------------------- 回 19楼(猎马网) 的帖子 您好, 我在测试机里使用wget测试,好象正常: root@los:~/test4# wget -6 http://www.iliema.com/ converted 'http://www.iliema.com/' (ANSI_X3.4-1968) -> 'http://www.iliema.com/' (UTF-8) --2016-08-11 22:28:41--   http://www.iliema.com/ Resolving www.iliema.com (www.iliema.com)... 2001:470:1f14:b5f::2 Connecting to www.iliema.com (www.iliema.com)|2001:470:1f14:b5f::2|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 77636 (76K) [text/html] Saving to: 'index.html.3' ------------------------- 回 20楼(猎马网) 的帖子 您好, 应该可以如IPv4那样,多个域名指到相同的IPv6地址。 ------------------------- 回 24楼(很快) 的帖子 您好, 请问您的nginx web是安装在Windows还是Linux的系统上? ------------------------- 回 26楼(喵咪喵) 的帖子 您好, 欢迎来到阿里云论坛。 申请到IPv6的隧道地址后,还需要在系统里配置的,以让这个IPv6的地址能被外网的用户访问到喔。 ------------------------- 回 29楼(不断学习) 的帖子 您好, 请问您使用的操作系统是WIndows 2012吗? 请问您执行的netsh命令是和操作说明那里一样的吗? ------------------------- 回 31楼(喵咪喵) 的帖子 您好, 应该不影响,如果前两项检查测试通过,最后一条(IPv6-only)测试不通过,应该是可以的。 ------------------------- 回 34楼(wolfing5210) 的帖子 您好, 我在Linux系统上,能ping通您的IPv6地址: root@los:~# ping6 2001:470:35:102a::2 PING 2001:470:35:102a::2(2001:470:35:102a::2) 56 data bytes 64 bytes from 2001:470:35:102a::2: icmp_seq=1 ttl=119 time=225 ms 64 bytes from 2001:470:35:102a::2: icmp_seq=2 ttl=119 time=226 ms 如果您要测试,要具备两个条件, a. 在Windows系统里,应该是使用 ping -6 的参数 b. 发出测试的系统是启用了IPv6 ------------------------- 回 37楼(小成123456) 的帖子 您好, 抱歉延时回复。 请问您在系统里,执行 ipconfig /all 后,能看到输出信息中包含的ipv6 tunel信息吗? ------------------------- 回 39楼(呢你) 的帖子 您好, 抱歉给您带来不便。 请问苹果审核拒绝的原因是什么,是不能连接到ipv6地址吗? 请问您创建的ipv6隧道地址,测试时能从外网成功访问吗? ------------------------- 回 41楼(呢你) 的帖子 您好, 80端口测试是正常的,但好象web返回了错误。 建议您咨询一下您的 APP 程序员。 root@los:~/test# curl [2001:470:18:95c::2] -so - | grep -iPo '(?<=<title>)(.*)(?=</title>)' J BossWeb/2.0.1.GA - Error report ------------------------- 回 44楼(nyanko桑) 的帖子 您好, 那请问您在例子中,第5步执行的命令是哪些呢? ------------------------- 回 45楼(小成123456) 的帖子 您好, 域名AAAA解析与IPv6隧道地址设置并不直接相关,如果您的IPv6隧道地址设置正确,从外网应该能ping通这个新设置的IPv6隧道地址。 ------------------------- 回 48楼(nyanko桑) 的帖子 您好, 好象命令看起来没有问题,您是从 HE 隧道地址设置网站里直接复制的,对吗? 那执行命令时,是否回显的结果是“确定”,还是有别的错误信息提示呢? ------------------------- 回 50楼(持名) 的帖子 您好, 那就奇怪了。 建议您回过头梳理一下,看看是否缺了哪个步骤或环境有哪些特殊的地方。 ------------------------- 回 52楼(nyanko桑) 的帖子 您好, 或许将原命令中的“add”(添加)改为“del”(删除)后,可以试试。  我个人猜测的。 ------------------------- 回 54楼(nyanko桑) 的帖子 您好, 好哩,到时如还没有解决问题,可通过站内信,发来临时的ECS登录信息,我为您看看喔。 ------------------------- 回 56楼(nyanko桑) 的帖子 您好, 申请到的IPv6隧道地址是不变的呀,除非您删除了。 ------------------------- 回 58楼(nyanko桑) 的帖子 您好, 好哩,祝愿您的APP能通过苹果的审核。 如还有疑问,欢迎跟帖。 ------------------------- 回 60楼(゛温ゝ先生) 的帖子 您好, 您在站内信里提到说“网络有重名”,现在系统里没成功添加ipv6地址吗? ------------------------- 回 61楼(陈cc123) 的帖子 您好, 一般AAA记录里,主机记录填写的是从HE申请到的IPv6隧道地址。 更新:应该是“记录值”里填写从he申请到的ipv6隧道地址。 ------------------------- 回 65楼(陈cc123) 的帖子 您好, 对不起,之前我的说法有错误。 按阿里云解析面板中,“主机记录”应该是您需要设置的网站访问地址,如我这里想设置 ipv6.anqun.org 的ipv6地址,“主机记录”里填写“ipv6”,而“记录值”里填写IPv6隧道地址:2001:470:18:401::2 ------------------------- 回 67楼(陈cc123) 的帖子 您好, 那请问您提交给 http://ipv6-test.com/ 测试的网址是什么呢? ------------------------- 回 69楼(陈cc123) 的帖子 您好, 页面 http://ipv6-test.com/validate.php 里提交的网址应该是一个域名网址,应该不能直接提交IPv6地址去测试的喔。 您可以在您的域名控制面板添加一条AAA记录的呀。 ------------------------- 回 72楼(陈cc123) 的帖子 您好, 能否使用如 netstat -noa | grep 80 的命令,来查看当前Web服务是否在ipv6地址监听使用呢? ------------------------- 回 74楼(陈cc123) 的帖子 您好, 图中没有显示IPv6相关的8080端口使用情况喔, 或许您可以运行 netstat -noa | grep 8080 再次确认一下。 ------------------------- 回 78楼(陈cc123) 的帖子 您好, 是的,不好意思,我忘记了您的系统是Windows,不是linux,所以不能直接用grep的命令。 现在从外网测试,您的tomcat站点是可以从ipv6地址访问了,但或许您将web从8080换到常用的80端口,方便访问。 root@los:~/test# curl [2001:470:18:ab3::2]:8080 -so - | grep -iPo '(?<=<title>)(.*)(?=</title>)' Apache Tomcat/7.0.54 ------------------------- 回 80楼(陈cc123) 的帖子 您好, 如果您提交给苹果审核就是带8080的IPv6地址,那可保持现状。 能否说一下具体您审核网址?如果按上边的测试结果来看,您的IPv6隧道地址是(曾)正常工作。 ------------------------- 回 82楼(陈cc123) 的帖子 您好, 现在从外网测试您给的网址,正常。 root@los:~/test# curl -6 'http://www.91mcgj.cn:8080' -so - | grep -iPo '(?<=<title>)(.*)(?=</title>)' Apache Tomcat/7.0.54 root@los:~/test# curl 'http://www.91mcgj.cn:8080' -so - | grep -iPo '(?<=<title>)(.*)(?=</title>)' Apache Tomcat/7.0.54 ------------------------- 回 84楼(陈cc123) 的帖子 您好, 可能那个检测的站点,只能检测默认80端口的吧,具体到您这里,您是要写明8080端口的,所以那个测试网址可能不适用喔。 ------------------------- 回 87楼(xiaopao888) 的帖子 您好, 欢迎来到阿里云论坛。 能否请问在“命令提示符”里执行以下的命令,看输出结果有没有关于ipv6的80地址监听呢? netstat -noa | find "80" ------------------------- 回 88楼(莫尼玛) 的帖子 您好, 欢迎来到阿里云论坛。 如果您使用自己的环境来测试,需要确认您的环境是否支持ipv6使用环境喔,如您的telnet程序是否支持ipv6,您的网络是否支持ipv6。 我拿一个美国的vps来测试,也是可以成功连接到您的ipv6隧道地址: root@los:~/test# curl [2001:470:18:aa8::2] -so - | grep -iPo '(?<=<title>)(.*)(?=</title>)' Microsoft Internet Information Services 8 ------------------------- 回 91楼(xiaopao888) 的帖子 您好, 如果web没有在iPv6的网络接口上监听,请尝试调整一下web的配置文件喔,如让它在所有的可用网络接口里监听。 ------------------------- 回 93楼(莫尼玛) 的帖子 您好, 请问您在tcp 8300里提供的服务是web的吗? 如果是web服务,测试不成功喔: root@los:~# curl [2001:470:18:aa8::2:8300] -so - | grep -iPo '(?<=<title>)(.*)(?=</title>)' root@los:~# ------------------------- 回 97楼(莫尼玛) 的帖子 您好, 好象用telnet测试8300 tcp 端口,不成功喔: root@los:~# telnet -6 2001:470:18:aa8::2 8300 Trying 2001:470:18:aa8::2... telnet: Unable to connect to remote host: Connection refused root@los:~# telnet -6 2001:470:18:aa8::2 80 Trying 2001:470:18:aa8::2... Connected to 2001:470:18:aa8::2. Escape character is '^]'. Connection closed by foreign host. ------------------------- 回 100楼(莫尼玛) 的帖子 您好, 如果您的socket程序默认不是在所有的端口上监听使用,是需要调整一下的喔。 或您使用 netstat -noa 的命令,查看一下都有哪些8300的端口在使用。 ------------------------- 回 102楼(莫尼玛) 的帖子 您好, 0.0.0.0 可能代表是IPv4的所有网络接口,不包括IPv6的啊。 请看这个云友以下的这个贴图,最后一行代表是IPv6的所有网络接口: ------------------------- 回 105楼(莫尼玛) 的帖子 您好, 好的,请稍等。 8310可以,8300也可以。 root@los:~# telnet -6 ht.yulesy.cn 8310 Trying 2001:470:18:aa8::2... Connected to ht.yulesy.cn. Escape character is '^]'. root@los:~# telnet -6 ht.yulesy.cn 8300 Trying 2001:470:18:aa8::2... Connected to ht.yulesy.cn. Escape character is '^]'. ------------------------- 回 109楼(涛涛~) 的帖子 您好, 如果您需要通过http访问位于两个不同服务器上的文件,或许是需要为这两个服务器都配置ipv6隧道地址喔。 ------------------------- 回 110楼(陌祥伟) 的帖子 您好, 我现在没测试机,不能具体为您查看输出结果, 您用 ipconfig 查看到的信息页面内容是怎么样的呢? ------------------------- 回 113楼(陌祥伟) 的帖子 您好, 请问您提到的“本地ping和telnet端口是通的”,是ping ipv6和telnet ipv6隧道地址都正常吗? ------------------------- 回 115楼(陌祥伟) 的帖子 您好, 我这里为您测试,也是ping6不通, 或许您需要再检查一下是否有防火墙或其它缺漏的环节没留意到: --- 2001:470:23:70d::2 ping statistics --- 65 packets transmitted, 0 received, 100% packet loss, time 64000ms ------------------------- 回 119楼(leyuwei) 的帖子 您好, 请问您的ipv6隧道地址是 2001:470:18:ecc::2 吗? 我从外网测试,返回是403的错误页: root@los:~# wget -6 http://[2001:470:18:ecc::2]:8080 converted 'http://[2001:470:18:ecc::2]:8080' (ANSI_X3.4-1968) -> 'http://[2001:470:18:ecc::2]:8080' (UTF-8) --2017-01-07 01:27:05--  http://[2001:470:18:ecc::2]:8080/ Connecting to [2001:470:18:ecc::2]:8080... connected. HTTP request sent, awaiting response... 403 Forbidden 2017-01-07 01:27:09 ERROR 403: Forbidden. root@los:~# curl -6 'http://www.dlmunews.club:8080' <p align='center'>▒▒▒▒▒▒▒▒▒▒▒▒ַ▒▒▒▒▒޲▒ϣ▒▒▒▒▒▒ô▒▒▒▒▒▒▒▒°ɣ▒</p> <p align='center'>▒▒▒▒▒ִ▒▒▒▒ˣ▒▒▒▒▒▒޾▒Ҫ▒▒ȡһЩ▒ֶ▒▒ˣ▒</p> <br/> <p align='center'>403 FORBIDDEN</p> <p align='center'>▒▒▒▒▒▒˼▒▒▒▒▒▒▒뿴▒▒▒ҵ▒▒▒▒ӣ▒</p>root@los:~# ------------------------- 回 118楼(陌祥伟) 的帖子 您好, 我去找个Windows 2008的系统为您测试一下喔。 请等待。 ------------------------- Re:回 118楼(陌祥伟) 的帖子 您好, 我找个测试机(用的是Windows 2008 SP2 32位中文版公共镜像),重复操作了一次,好象正常哩: C:\Users\Administrator>netsh interface ipv6 show interface Idx  Met   MTU   状态          名称 ---  ---  -----  -----------  -------------------   1   50 4294967295  connected    Loopback Pseudo-Interface 1 15   10   1280  connected    IP6Tunnel 10   10   1500  connected    本地连接 22   50   1280  disconnected  本地连接* 12 23   50   1280  disconnected  本地连接* 13 11   10   1500  connected    本地连接 2 C:\Users\Administrator>ping -6 2001:470:18:401::2 正在 Ping 2001:470:18:401::2 从 2001:470:18:401::2 具有 32 字节的数据: 来自 2001:470:18:401::2 的回复: 时间<1ms 来自 2001:470:18:401::2 的回复: 时间<1ms 2001:470:18:401::2 的 Ping 统计信息:     数据包: 已发送 = 2,已接收 = 2,丢失 = 0 (0% 丢失), 往返行程的估计时间(以毫秒为单位):     最短 = 0ms,最长 = 0ms,平均 = 0ms Control-C ^C C:\Users\Administrator>ping -6 ipv6.google.com 正在 Ping ipv6.l.google.com [2404:6800:4008:800::200e] 从 2001:470:18:401::2 具 有 32 字节的数据: 来自 2404:6800:4008:800::200e 的回复: 时间=401ms 来自 2404:6800:4008:800::200e 的回复: 时间=400ms ------------------------- 回 122楼(leyuwei) 的帖子 您好, 在我使用的测试机里,能访问到您提供的网址内容喔,祝您通过APP的IPv6审核。 root@los:~/test# curl -6 'http://www.dlmunews.club:8080/dlmunews/test.html' test IPV6root@los:~/test# ------------------------- 回 125楼(陌祥伟) 的帖子 您好, 抱歉没有留意您的ECS网络类型, 弹性公网IP,看介绍说是一种NatIP,我不确定这与“经典网络”里的公网IP是否有一些使用限制情景, 建议您发工单咨询一下阿里云官方工程师: https://workorder.console.aliyun.com/ 本帖里的例子ECS是“经典网络”,并不是“专有网络”或“弹性公网IP”的使用场景喔。 ------------------------- 回 131楼(dearvitamin) 的帖子 您好, 测试得知,经典网络中的站点可以,专用网络中的站点不可以访问到喔。 root@los:~/test# curl -6 'http://www.spl258.com' -so - | grep -iPo '(?<=<title>)(.*)(?=</title>)' 斯普林游戏 root@los:~/test# curl -6 'http://www.longm258.com' -so - | grep -iPo '(?<=<title>)(.*)(?=</title>)' ------------------------- 回 133楼(vinny1024) 的帖子 您好, 欢迎来到阿里云论坛。 本例子里的Web是IIS,并不是apache喔。 请问您在apache的配置文件里,已经设置监听使得ipv6的地址和端口了吗? ------------------------- 回 136楼(raolan123) 的帖子 您好, 已有的云友反馈,不能按例子中的方法在”专有网络“中成功设置ipv6隧道地址。 ------------------------- 回 138楼(ekuns) 的帖子 您好, 欢迎来到阿里云论坛。 操作步骤,Windows 2012和Windows 2008应该是大致相同的。 请问您是否曾按帖子里的步骤,在Windows 2008里测试了呢? 如果您在Windows 2008里测试失败,我为您找个测试机来实践一下喔。 ------------------------- 回 140楼(poplanchong) 的帖子 您好, 如果是ipv6-only,可能还需要DNS解析之类支持的。 ------------------------- 回 142楼(poplanchong) 的帖子 您好, 欢迎来到阿里云论坛。 如果可以ping通ipv6的隧道地址,那么说明配置应该是成功的。 但如果您设置ipv6隧道地址目的是为了通过苹果的APP审核,还是要看苹果公司的判断结果喔。 祝您成功。 ------------------------- 回 144楼(poplanchong) 的帖子 您好, 很高兴听到您的APP已经通过苹果公司的审核。 我没有向苹果公司提交过APP审核,并没有实践的经验。所以我也不确定为什么苹果公司先后不同审核结果的原因。 您前后向苹果公司提交过几个网址用于审核? ------------------------- 回 146楼(没办法抽奖) 的帖子 您好, 我在测试机里, 可以ping通您提到的网关,但您的隧道地址ping不通喔, 是不是哪一步没有操作完整? root@los:~/test5# ping6 2001:470:1f04:a9e::2 PING 2001:470:1f04:a9e::2(2001:470:1f04:a9e::2) 56 data bytes --- 2001:470:1f04:a9e::2 ping statistics --- 41 packets transmitted, 0 received, 100% packet loss, time 39999ms root@los:~/test5# ping6 2001:470:1f04:a9e::1 PING 2001:470:1f04:a9e::1(2001:470:1f04:a9e::1) 56 data bytes 64 bytes from 2001:470:1f04:a9e::1: icmp_seq=1 ttl=56 time=53.5 ms 64 bytes from 2001:470:1f04:a9e::1: icmp_seq=2 ttl=56 time=53.8 ms ------------------------- 回 147楼(poplanchong) 的帖子 您好,   如此,我也不确定具体的原因了。不过,APP审核通过了,终究是件好事,是不是呢? ------------------------- 回 150楼(没办法抽奖) 的帖子 晚上好, 请问您的ECS操作系统是Windows 2012的吗? ------------------------- 回 152楼(l_zhaowei) 的帖子 您好, 请问您新购的ECS实例带宽类型是“专有网络”的吗? ------------------------- 回 153楼(l_zhaowei) 的帖子 您好, 暂时没有在“专有网络”实现IPv6隧道地址的方案喔,抱歉。 ------------------------- 回 157楼(鸿儒网络) 的帖子 您好, 看您的截图,或许需要先着重看一下,为什么“80端口不显示IPV6”, 请问您的站点绑定属性中,是否有IPv6的地址可以选择使用呢? ------------------------- 回 159楼(aeria) 的帖子 您好, 欢迎来到阿里云论坛。 请问您运行 netstat 的命令,可以查看到tomcat在ipv6的80端口上也有监听使用吗? ------------------------- 回 161楼(aeria) 的帖子 您好, 能贴一下您的tomcat配置文件 server.xml 的内容吗(监听那个环节的)? ------------------------- 回 164楼(aeria) 的帖子 您好, 或许您可以查看一下这个问答里提到的“authbind”: http://serverfault.com/questions/605684/tomcat-java-not-listening-on-ipv6 ------------------------- 回 167楼(aeria) 的帖子 您好, 那我去找个测试机,为您测试一下。 您的环境,是Windows 2012 + Tomcat 8 吗? ------------------------- 回 170楼(aeria) 的帖子 您好, 为您写了这个帖子,不知道是否对您有用: 《用ipv6隧道地址访问tomcat 站点内容》 - https://bbs.aliyun.com/read/312055.html ------------------------- 回 172楼(bingo_vc) 的帖子 您好, 欢迎来到阿里云论坛。 如果您的站点不需要域名访问,直接用ipv6隧道地址访问,应该也是可以的喔。 ------------------------- 回 174楼(clks) 的帖子 您好, 现在为您测试,可以访问得到页面喔: --2017-04-09 06:25:52--   http://www.meihaojiawodecheng.cn/ Resolving www.meihaojiawodecheng.cn (www.meihaojiawodecheng.cn)... 2001:470:18:352::2, 116.62.37.108 Connecting to www.meihaojiawodecheng.cn (www.meihaojiawodecheng.cn)|2001:470:18:352::2|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 2241 (2.2K) [text/html] Saving to: 'index.html.3' ------------------------- 回 176楼(clks) 的帖子 您好, 在浏览器里,输入如 http://[2001:470:18:352::2]/ 的地址后,应该就能显示到站点内容了,有时可能需要刷新多几下。 ------------------------- 回 178楼(自由2017) 的帖子 您好, 抱歉延时回复。 请问您的ECS实例带宽类型是哪种,是“经典网络”还是“专有网络”呢? ------------------------- 回 179楼(l_zhaowei) 的帖子 您好, 如果ECS实例是“专有网络”的,或许可以参考这个帖子里的例子试试喔: https://bbs.aliyun.com/read/312196.html ------------------------- 回 182楼(l_zhaowei) 的帖子 您好, 有“经典网络”的选项,据云友们反馈,好象一些较早之前注册和使用的阿里云账户还可以在新购的ECS配置里选择“经典网络”的网络类型。 ------------------------- 回 183楼(lbmjsls) 的帖子 您好, 欢迎来到阿里云论坛。 是的,可以,您可以用一个已经有ICP备案的子域名来操作,如果您认为不会对您的业务带来负面影响的话。 ------------------------- 回 186楼(l_zhaowei) 的帖子 您好, 目前收到的反馈来看,并不是所有的阿里云账号可以选购到“经典网络”。 我并不清楚阿里云的具体购物车规则哩。 ------------------------- 回 188楼(自由2017) 的帖子 您好, 如果ECS实例是“专有网络”的,或许可以参考这个帖子里的例子试试喔: https://bbs.aliyun.com/read/312196.html ------------------------- 回 190楼(自由2017) 的帖子 您好, 已经站内信您喔。 ------------------------- 回 192楼(lbmjsls) 的帖子 您好, 都可以ping通,但返回的延时可能有些高。 root@los:~/test5# ping6 thls.qian178.com PING thls.qian178.com(lbmjsls-1-pt.tunnel.tserv20.hkg1.ipv6.he.net) 56 data bytes 64 bytes from lbmjsls-1-pt.tunnel.tserv20.hkg1.ipv6.he.net: icmp_seq=1 ttl=121 time=624 ms 64 bytes from lbmjsls-1-pt.tunnel.tserv20.hkg1.ipv6.he.net: icmp_seq=2 ttl=121 time=622 ms --- thls.qian178.com ping statistics --- 3 packets transmitted, 2 received, 33% packet loss, time 2000ms rtt min/avg/max/mdev = 622.017/623.254/624.492/1.467 ms root@los:~/test5# ping6 qian178.com PING qian178.com(lbmjsls-2-pt.tunnel.tserv20.hkg1.ipv6.he.net) 56 data bytes 64 bytes from lbmjsls-2-pt.tunnel.tserv20.hkg1.ipv6.he.net: icmp_seq=2 ttl=121 time=564 ms 64 bytes from lbmjsls-2-pt.tunnel.tserv20.hkg1.ipv6.he.net: icmp_seq=3 ttl=121 time=563 ms ------------------------- 回 194楼(龙阁商务) 的帖子 您好, 欢迎来到阿里云论坛。 如果前两项测试通,那就可以了呀。 您是对哪里还不满意呢? ------------------------- 回 196楼(龙阁商务) 的帖子 您好, 苹果审核不限次数的吧? 期待您的审核结果喔。 ------------------------- 回 198楼(cloud_lee) 的帖子 您好, 在国外的IPv6环境中的服务器为您测试IPv6访问,是可以的喔: --2017-04-17 07:40:56--   http://www.zxwol.com/ Resolving www.zxwol.com (www.zxwol.com)... 2001:470:18:5cf::2 Connecting to www.zxwol.com (www.zxwol.com)|2001:470:18:5cf::2|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 135046 (132K) [text/html] Saving to: 'index.html.15' ------------------------- 回 204楼(龙阁商务) 的帖子 您好, 现在测试,可以访问喔。 --2017-04-18 03:48:45--   http://myjcb.hqzh168.com/ Resolving myjcb.hqzh168.com (myjcb.hqzh168.com)... 2001:470:a:ba4::2 Connecting to myjcb.hqzh168.com (myjcb.hqzh168.com)|2001:470:a:ba4::2|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 34431 (34K) [text/html] Saving to: 'index.html.16' ------------------------- 回 206楼(hsy-ios) 的帖子 您好, 欢迎来到阿里云论坛。 现在看起来,您的ipv6隧道地址可以ping得通喔: PING 2001:470:18:600::2(2001:470:18:600::2) 56 data bytes 64 bytes from 2001:470:18:600::2: icmp_seq=1 ttl=121 time=557 ms 64 bytes from 2001:470:18:600::2: icmp_seq=2 ttl=121 time=567 ms 64 bytes from 2001:470:18:600::2: icmp_seq=3 ttl=121 time=574 ms ------------------------- 回 208楼(hsy-ios) 的帖子 您好, 请问是哪个ipv6地址呢? ------------------------- 回 210楼(hsy-ios) 的帖子 您好, --2017-04-20 22:41:23--  http://[2001:470:18:600::2]/ Connecting to [2001:470:18:600::2]:80... connected. HTTP request sent, awaiting response... 301 Moved Permanently Location: https://m.wnchebao.com/ [following] converted 'https://m.wnchebao.com/' (ANSI_X3.4-1968) -> 'https://m.wnchebao.com/' (UTF-8) --2017-04-20 22:41:24--   https://m.wnchebao.com/ Resolving m.wnchebao.com (m.wnchebao.com)... 2001:470:18:600::2 Connecting to m.wnchebao.com (m.wnchebao.com)|2001:470:18:600::2|:443... connected. HTTP request sent, awaiting response... 404 Not Found 2017-04-20 22:41:27 ERROR 404: Not Found. ------------------------- 回 212楼(鸿儒网络) 的帖子 您好, 感谢您的经验分享喔。 如有更多的用户遇到类似的“延迟生效”现象,将添加相应的提示信息喔。 ------------------------- 回 214楼(北极星图图) 的帖子 您好, 如果tomcat没有在ipv6的网络地址上监听,您可以详细查看一下tomcat的配置文件喔, 这里有一个例子可以参考一下: https://bbs.aliyun.com/read/312055.html ------------------------- 回 215楼(潘飞虎) 的帖子 您好, 测试的话,您的ipv6隧道地址可以ping通,但ipv6的80连接超时,建议检查web服务的配置喔: PING 2001:470:18:6ae::2(2001:470:18:6ae::2) 56 data bytes 64 bytes from 2001:470:18:6ae::2: icmp_seq=1 ttl=121 time=564 ms 64 bytes from 2001:470:18:6ae::2: icmp_seq=2 ttl=121 time=565 ms --- 2001:470:18:6ae::2 ping statistics --- 3 packets transmitted, 2 received, 33% packet loss, time 1999ms rtt min/avg/max/mdev = 564.291/565.080/565.870/1.090 ms root@los:~/test5# wget -6 http://[2001:470:18:6ae::2] converted 'http://[2001:470:18:6ae::2]' (ANSI_X3.4-1968) -> 'http://[2001:470:18:6ae::2]' (UTF-8) --2017-04-26 14:02:36--  http://[2001:470:18:6ae::2]/ Connecting to [2001:470:18:6ae::2]:80... failed: Connection timed out. Retrying. ------------------------- 回 216楼(hzyt) 的帖子 您好, 欢迎来到阿里云论坛。 请问您ECS实例带宽类型是哪种呢,是“专有网络”吗? ------------------------- 回 220楼(潘飞虎) 的帖子 您好, 请问您的apache配置文件,如 httpd.conf 中,是否有监听ipv6的网络地址呢(如[::])? ------------------------- 回 221楼(永超科技) 的帖子 您好, 请问是否您多次运行了相同的netsh配置命令呢? ------------------------- 回 224楼(beijixingtu) 的帖子 您好, 现在访问您的站点,在ipv6访问中,应该是可以看到内容(或许是部分)的: ------------------------- 回 226楼(四眼鱼) 的帖子 您好, 抱歉延时回复, 请问您的ECS实例使用提“经典网络”的网络类型吗? ------------------------- 回 228楼(这是高科技) 的帖子 您好, 因为目前阿里云的“专有网络”类型的ECS实例限制,不能成功配置和使用6in4的IPv6隧道地址的。 使用外部的IPv6地址的VPS,虽然可以尝试,但也不一定能100%解决苹果APP上架的困扰。 ------------------------- 回 229楼(潘飞虎) 的帖子 您好, 可能还需要看具体的原因,苹果有没有具体说是因为什么而拒绝呢?还是因为IPv6的访问可用性吗? IPv6的DNS并不是必须的,如果您也想设置IPv6的DNS,可以参考这个帖子:《用HE提供的免费DNS解析服务通过IPv6 DNS检测》 - https://bbs.aliyun.com/read/313524.html? ------------------------- 回 233楼(潘飞虎) 的帖子 您好, 嗯,或许您还可以具体说说,中国目前的公共互联网还没有实现IPv6,所以对于中国的APP很为难。 ------------------------- 回 234楼(beijixingtu) 的帖子 您好, 是的,如果可以,可以附上说明,目前中国的公共互联网没有实现IPv6,一般用户无法直接在IPv6的环境里完成完整测试。 ------------------------- 回 237楼(潘飞虎) 的帖子 您好, 苹果要求目前国内还没有完整布置的IPv6环境,是有些让普通人摸不着头脑。 那您现在的工作环境中,有具备测试条件吗?如Mac电脑和苹果手机。 ------------------------- 回 239楼(潘飞虎) 的帖子 您好, 文档中提到,即使是用Mac模拟ipv6的网络,但带宽的出口还是ipv4的。 或许您可以尝试建一个可访问ipv6的wifi环境试试,如网上看到有一些无线路由器或许可以“独特”地构建出来。 ------------------------- 回 240楼(xunchengweidao) 的帖子 您好, 欢迎来到阿里云论坛。 或许您当前使用的nginx没有编译对ipv6的支持喔。 ------------------------- 回 244楼(feng_li) 的帖子 您好, 欢迎来到阿里云论坛。 很乐意,为您ping6测试: PING www.ymygo.com(wsbl-1-pt.tunnel.tserv22.tyo1.ipv6.he.net) 56 data bytes 64 bytes from wsbl-1-pt.tunnel.tserv22.tyo1.ipv6.he.net: icmp_seq=1 ttl=121 time=430 ms 64 bytes from wsbl-1-pt.tunnel.tserv22.tyo1.ipv6.he.net: icmp_seq=2 ttl=121 time=429 ms 64 bytes from wsbl-1-pt.tunnel.tserv22.tyo1.ipv6.he.net: icmp_seq=3 ttl=121 time=430 ms 64 bytes from wsbl-1-pt.tunnel.tserv22.tyo1.ipv6.he.net: icmp_seq=4 ttl=121 time=430 ms ------------------------- 回 246楼(feng_li) 的帖子 您好, 现在再次测试,还是能ping得通。 配置了ipv6的隧道地址,仅是说您的系统(服务器)可以通过隧道地址交换ipv6的数据,如能ping6通或浏览ipv6的网站。但这并不代表着您的APP一定可以支持ipv6的访问喔。建议您再对照着苹果对于APP的 IPv6 设计指导,看看是否有其它原因: https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html PING www.ymygo.com(wsbl-1-pt.tunnel.tserv22.tyo1.ipv6.he.net) 56 data bytes 64 bytes from wsbl-1-pt.tunnel.tserv22.tyo1.ipv6.he.net: icmp_seq=1 ttl=121 time=434 ms 64 bytes from wsbl-1-pt.tunnel.tserv22.tyo1.ipv6.he.net: icmp_seq=2 ttl=121 time=434 ms ------------------------- 回 248楼(爱爱莫能助) 的帖子 您好, 欢迎来到阿里云论坛。 在系统里配置ipv6的命令在he的站点上有提供现成的喔。 ------------------------- 回 251楼(天下才子) 的帖子 您好, 为您查看,现在可以在浏览器里看到内容喔: ------------------------- 回 255楼(居然要昵称) 的帖子 您好, 欢迎来到阿里云论坛。 请问,如 ping ::1  会有哪些信息提示呢? ------------------------- 回 254楼(天下才子) 的帖子 您好, 请问您家里的宽带是哪家的呢,是中国电信的吗? ------------------------- 回 259楼(新飞) 的帖子 您好, 最后一项检测的对象是ipv6 dns server,这是与域名的解析DNS地址相关, 如果您需要,可能需要将域名的DNS地址更改为国外支持ipv6的。 ------------------------- 回 260楼(robin_tian) 的帖子 您好, 欢迎来到阿里云论坛, 看起来,http可以访问喔(但首页会提示404出错): converted 'http://api2.ihyoo.com' (ANSI_X3.4-1968) -> 'http://api2.ihyoo.com' (UTF-8) --2017-05-15 16:03:04--   http://api2.ihyoo.com/ Resolving api2.ihyoo.com (api2.ihyoo.com)... 2001:470:18:d6::2 Connecting to api2.ihyoo.com (api2.ihyoo.com)|2001:470:18:d6::2|:80... connected. HTTP request sent, awaiting response... 404 Not Found 2017-05-15 16:03:06 ERROR 404: Not Found. ------------------------- 回 264楼(天下才子) 的帖子 您好, 如果在您的电脑上不能访问ipv6的网站,可以尝试通过这个在线网站测试一下(可能要用代理): www.ipv6proxy.net ------------------------- 回 267楼(jsrabbit) 的帖子 您好, 欢迎来到阿里云论坛。 看您的几个截图,出现了两个IPv6地址,2001:da8:20d:400::8be0:dd58 和 2001:470:18:b5::2, 如果 2001:470:18:b5::2 是正确的,现在测试是可以访问到80端口端的喔: converted 'http://[2001:470:18:b5::2]' (ANSI_X3.4-1968) -> 'http://[2001:470:18:b5::2]' (UTF-8) --2017-05-17 13:50:44--  http://[2001:470:18:b5::2]/ Connecting to [2001:470:18:b5::2]:80... connected. HTTP request sent, awaiting response... 200 OK Length: 107908 (105K) [text/html] Saving to: 'index.html' index.html                       100%[=========================================================>] 105.38K  20.0KB/s   in 5.3s ------------------------- 回 269楼(jsrabbit) 的帖子 您好, 个人觉得 IPv6 DNS Server 设置与否,影响不大。但您有空,也可以换一家支持IPv6的国外DNS商,如 dns.he.net。 ------------------------- 回 270楼(eric984) 的帖子 来自河源的朋友, 欢迎来到阿里云论坛。 如之前有云友提到,将HE提供的示例命令中,将公网IP换成私网IP,或许就可以了喔。 ------------------------- 回 273楼(通通优品) 的帖子 您好, 欢迎来到阿里云论坛。 请问您在HE里提交的IP地址是什么呢? 一般是提交ECS实例的公网IP地址,并不是内网IP地址喔。 ------------------------- 回 275楼(通通优品) 的帖子 您好, 那能否再检查一下您的安全组规则设置呢(有没有过滤80端口)? 如果可以,或许您可以先尝试在规则里开放所有的访问,对比一下结果。 ------------------------- 回 277楼(通通优品) 的帖子 您好, 如果您多次尝试运行命令来绑定ipv6隧道地址,需要确认最后ipv6隧道地址是能从外网ping6通的喔,同时可以查看一下路由表是否正确。 ------------------------- 回 280楼(大男人主义) 的帖子 您好, 欢迎来到阿里云论坛。 祝您的APP能成功上架喔。 ------------------------- 回 282楼(仙人掌有刺) 的帖子 您好, 从现在的测试结果来看,好象您的域名AAAA解析没有生效或失败: converted 'http://m.dnanren.cn' (ANSI_X3.4-1968) -> 'http://m.dnanren.cn' (UTF-8) --2017-05-25 10:30:51--   http://m.dnanren.cn/ Resolving m.dnanren.cn (m.dnanren.cn)... failed: Name or service not known. wget: unable to resolve host address 'm.dnanren.cn' ------------------------- 回 284楼(葫芦娃警长) 的帖子 您好, 抱歉给您带来不便。 域名AAAA记录和ipv4的A记录是不互相影响的喔。 如果ping -6 外网的地址不通,那有可能是路由没配置好喔。 ------------------------- 回 287楼(中广巨力) 的帖子 您好, 欢迎来到阿里云论坛。 现在好象我无法ping通您的ipv6隧道地址喔: PING 2001:470:1f10:124::2(2001:470:1f10:124::2) 56 data bytes --- 2001:470:1f10:124::2 ping statistics --- 13 packets transmitted, 0 received, 100% packet loss, time 11997ms ------------------------- 回 290楼(中广巨力) 的帖子 您好, 欢迎来到阿里云论坛。 一般不需要重新申请第二个隧道地址喔。 建议您检查一下ipv6的路由情况。 ------------------------- 回 292楼(中广巨力) 的帖子 您好, 抱歉延时回复。 如果您ping -6 不通隧道地址的网关,可以检查一下ECS实例的安全组是否有限制访问: https://help.aliyun.com/document_detail/25471.html ------------------------- 回 294楼(yan555) 的帖子 您好, 欢迎来到阿里云论坛。 请问您在系统中执行的是哪些命令, 执行命令后,有哪些回显的信息呢? ------------------------- 回 298楼(lsfoo) 的帖子 您好, 欢迎来到阿里云论坛。 例子中是ipv6隧道地址,是需经ipv4传送的,所以,建议您在安全组里允许所有的协议和端口,对比测试一下喔。 ------------------------- 回 300楼(华邦云12138) 的帖子 您好, 提示有重名,有可能是多次执行命令后提示的。 可删除之前添加的,或第二次执行命令时,跳过这一步。 ------------------------- 回 301楼(华邦云12138) 的帖子 您好, 建议您检查实例的安全组规则, 如果可以,建议放行全部的协议和端口: https://help.aliyun.com/document_detail/25471.html ------------------------- 回 305楼(华邦云12138) 的帖子 您好, 抱歉延时回复。 能否截图,看看您的安全组规则呢? ------------------------- 回 306楼(笔墨kk) 的帖子 您好, 欢迎来到阿里云论坛。 在图中看到的信息,虚拟的IPv6网络接口是“断开”状态的喔。 请问您具体执行了哪些命令呢? ------------------------- 回 310楼(笔墨kk) 的帖子 您好, 看命令的内容,是HE网站上提供的。 如果您使用的专有网络,需要注意将命令中的公网IP换成系统的内网IP喔。 ------------------------- 回 312楼(笔墨kk) 的帖子 您好, 可以先试试哩,替换一下IP后试试。 ------------------------- 回 314楼(华邦云12138) 的帖子 您好, 如广东的中国电信用户,应该也可以直接ping -6 的吧, 如现在我尝试的: 正在 Ping 2001:470:18:b07::2 具有 32 字节的数据: 请求超时。 来自 2001:470:18:b07::2 的回复: 时间=994ms 来自 2001:470:18:b07::2 的回复: 时间=996ms 来自 2001:470:18:b07::2 的回复: 时间=959ms 2001:470:18:b07::2 的 Ping 统计信息:     数据包: 已发送 = 4,已接收 = 3,丢失 = 1 (25% 丢失), 往返行程的估计时间(以毫秒为单位):     最短 = 959ms,最长 = 996ms,平均 = 983ms ------------------------- 回 317楼(笔墨kk) 的帖子 您好, 创建IPv6隧道地址时,是需要提交公网IP的喔。 只不过,是在创建好隧道地址后的命令中,替换喔。 ------------------------- 回 320楼(笔墨kk) 的帖子 您好, 很高兴听到您已经在系统中成功配置了ipv6隧道地址。 ------------------------- 回 322楼(笔墨kk) 的帖子 您好, 这个需要满足一些条件的,如您家里用来ping的系统是什么呢,有没有启用ipv6?您家里的路由器是否支持ipv6? 如在我自己的电脑里能ping -6 通您的隧道地址: 正在 Ping yongchun.gosob.com [2001:470:18:cce::2] 具有 32 字节的数据: 来自 2001:470:18:cce::2 的回复: 时间=3291ms 请求超时。 来自 2001:470:18:cce::2 的回复: 时间=676ms 来自 2001:470:18:cce::2 的回复: 时间=913ms ------------------------- 回 321楼(miazhang) 的帖子 您好, 欢迎来到阿里云论坛。 现在从外网的机子测试,能ping6通您的隧道地址喔。 论坛在Chrome和Firefox里,是无法上传图片,但如UC可以。 PING 2001:470:18:b61::2(2001:470:18:b61::2) 56 data bytes 64 bytes from 2001:470:18:b61::2: icmp_seq=1 ttl=121 time=610 ms 64 bytes from 2001:470:18:b61::2: icmp_seq=2 ttl=121 time=602 ms 64 bytes from 2001:470:18:b61::2: icmp_seq=3 ttl=121 time=601 ms 64 bytes from 2001:470:18:b61::2: icmp_seq=4 ttl=121 time=602 ms ------------------------- 回 326楼(笔墨kk) 的帖子 您好, 嗯,一般情况来说,能ping -6 得通ipv6隧道地址,那说明您的设置生效了喔。 如果不信,那可以重装ECS系统后,再ping -6 一下,看能否通。 ------------------------- 回 328楼(笔墨kk) 的帖子 您好, 好哩,祝您的APP上架成功喔。 ------------------------- 回 329楼(miazhang) 的帖子 您好, 请问执行以下命令,会有什么样的显示结果呢? netstat -noa | find ":80" ------------------------- 回 333楼(miazhang) 的帖子 您好, 如果这是全部的信息输出, 是喔,您的Web服务没有在ipv6的网络接口上监听使用喔。 ------------------------- 回 334楼(leodoo) 的帖子 您好, 欢迎来到阿里云论坛。 1. HE的隧道地址是6in4,好象是理解为将ipv6的数据包通过ipv4来传送。如果您的应用服务需要使用ipv6地址来通讯,是需要在ipv6的网络接口上监听 3. 从外网测试,可以访问您的站点喔: converted 'http://5656k.com' (ANSI_X3.4-1968) -> 'http://5656k.com' (UTF-8) --2017-06-15 10:24:13--   http://5656k.com/ Resolving 5656k.com (5656k.com)... 2001:470:18:cf4::2 Connecting to 5656k.com (5656k.com)|2001:470:18:cf4::2|:80... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Saving to: 'index.html.5' ------------------------- Re:回 338楼(miazhang) 的帖子 您好, 如果是 dig,应该是dig域名而不是网址吧? ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46629 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ; www.xueshupa.net.              IN      AAAA ;; ANSWER SECTION: www.xueshupa.net.       600     IN      AAAA    2001:470:18:b61::2 ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 25716 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ; http://www.xueshupa.net.       IN      AAAA ;; Query time: 5013 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) ;; WHEN: Thu Jun 15 23:22:35 CST 2017 ;; MSG SIZE  rcvd: 52 ------------------------- 回 340楼(超级蜜蜂) 的帖子 您好, 欢迎来到阿里云论坛。 现在我测试,可以喔: --2017-06-20 21:20:37--   https://www.zgzbsc.vip/Diamond/frontgoods/index Resolving www.zgzbsc.vip (www.zgzbsc.vip)... 2001:470:18:1141::2 Connecting to www.zgzbsc.vip (www.zgzbsc.vip)|2001:470:18:1141::2|:443... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Saving to: 'index' ------------------------- 回 342楼(miazhang) 的帖子 您好, 抱歉听到您的APP被苹果拒审, 如在开始讨论的,苹果并不要求APP服务器一定要有IPv6的地址,但强调APP软件本身要使用ipv6-only的设计规范,如要使用域名来引用地址,要使用新的函数,不能将ipv4的地址写死,等等。 建议您下一步的排查重心放在APP软件本身上。 ------------------------- 回 344楼(超级蜜蜂) 的帖子 您好, 抱歉听到您的APP被苹果拒审, 如在开始讨论的,苹果并不要求APP服务器一定要有IPv6的地址,但强调APP软件本身要使用ipv6-only的设计规范,如要使用域名来引用地址,要使用新的函数,不能将ipv4的地址写死,等等。 建议您下一步的排查重心放在APP软件本身上。 ------------------------- 回 347楼(hornsun.tech) 的帖子 您好, 欢迎来到阿里云论坛。 服务器 执行 netstat -nao | find "80"时 没看到有[::]:80端 -> 请问您有没检查Web的设置,是否有监听使用ipv6的地址呢? 按照提示,安全组规则也增加了公网的入网规则 -> 请问您添加的规则是怎么样的呢? ------------------------- 回 348楼(24k壮士) 的帖子 您好, 欢迎来到阿里云论坛。 现在测试,不能ping6通您的隧道地址喔。 ING zgzzhds.com(AyinAy7-1-pt.tunnel.tserv25.sin1.ipv6.he.net) 56 data bytes --- zgzzhds.com ping statistics --- 12 packets transmitted, 0 received, 100% packet loss, time 10997ms ------------------------- 回 351楼(很赞) 的帖子 您好, 欢迎来到阿里云论坛。 是的,因为SLB的服务器用户不能配置隧道地址,而ECS是在SLB后边。 ------------------------- 回 353楼(很赞) 的帖子 您好, 按苹果的指导文档来看,要求的是APP软件本身能兼容ipv6-only的网络环境,并不是要求APP服务器有ipv6的地址。 所以,重心应该是在app软件本身的设计和构建上哩。 ------------------------- 回 355楼(aaa.a) 的帖子 您好, 欢迎来到阿里云论坛。 现在测试,可以ping得通喔: PING 2001:470:35:7ee::2(2001:470:35:7ee::2) 56 data bytes 64 bytes from 2001:470:35:7ee::2: icmp_seq=1 ttl=120 time=555 ms 64 bytes from 2001:470:35:7ee::2: icmp_seq=2 ttl=120 time=555 ms 64 bytes from 2001:470:35:7ee::2: icmp_seq=3 ttl=120 time=555 ms ------------------------- 回 357楼(miazhang) 的帖子 您好, ipv6 dns server,请参考这个例子:《用HE提供的免费DNS解析服务通过IPv6 DNS检测》 - https://bbs.aliyun.com/read/313524.html? ------------------------- 回 359楼(xl_young) 的帖子 您好, 欢迎来到阿里云论坛。 请问您的实例安全组是否允许所以协议通过呢? ------------------------- 回 361楼(xl_young) 的帖子 您好, 能否截图看看安全组规则的内容? ------------------------- 您好,欢迎来到阿里云论坛。可以ping6通,wget返回404错误信息:--2017-08-01 12:24:03--  http://api.qingyun100.com/Resolving api.qingyun100.com (api.qingyun100.com)... 2001:470:18:490::2, 139.196.40.67Connecting to api.qingyun100.com (api.qingyun100.com)|2001:470:18:490::2|:80... connected.HTTP request sent, awaiting response... 404 Not Found2017-08-01 12:24:03 ERROR 404: Not Found. ------------------------- 回 365楼(菜鸟017) 的帖子 您好, 欢迎来到阿里云论坛。 从外围的服务器来测试的话,提示403禁止访问喔: --2017-08-09 09:35:44--   http://tangxianqipai1.zai0312.com:90/ Resolving tangxianqipai1.zai0312.com (tangxianqipai1.zai0312.com)... 2001:470:18:695::2 Connecting to tangxianqipai1.zai0312.com (tangxianqipai1.zai0312.com)|2001:470:18:695::2|:90... connected. HTTP request sent, awaiting response... 403 Forbidden 2017-08-09 09:35:45 ERROR 403: Forbidden. ------------------------- 回 368楼(菜鸟017) 的帖子 您好, 当时,我是使用境外的IPv6机子来为您测试的喔。 ------------------------- 回 369楼(菜鸟017) 的帖子 您好, 这个可能是测试时,所使用的DNS域名服务器不支持ipv6吧。 一般这个不太紧要的,因为国内的DNS服务器,一般没有IPv6地址的,除非您使用国外的。 ------------------------- 回 372楼(菜鸟017) 的帖子 您好, 目前的情况,可能阿里云没有为ECS配置可公众访问的IPv6地址呢。 阿里云的公共DNS服务器,目前好象也没有IPv6地址。 ------------------------- 回 374楼(菜鸟017) 的帖子 您好, 如果是在Windows 2012,删除之前存在的“ip6tunnel”虚拟接口, 或许可以试试以下这个命令: netsh int ipv6 delete interface "ip6tunnel" ------------------------- 回 377楼(菜鸟017) 的帖子 您好, 很高兴听到您已经解决了问题, 有空时,请多来阿里云论坛逛逛喔。 ------------------------- 回 380楼(sheldonlin) 的帖子 您好, 欢迎来到阿里云论坛。 能否贴出您在Windows里执行的命令? ------------------------- 您好,可能需要检查web服务是否也在ipv6的网络地址里监听80端口: --2017-08-20 09:37:23--  (try: 2)   http://kambuzz.com/ Connecting to kambuzz.com (kambuzz.com)|2001:470:18:8f2::2|:80... failed: Connection re fused. liujia@hk2:~/test6$ ping6 2001:470:18:8f2::2 PING 2001:470:18:8f2::2(2001:470:18:8f2::2) 56 data bytes 64 bytes from 2001:470:18:8f2::2: icmp_seq=1 ttl=127 time=311 ms 64 bytes from 2001:470:18:8f2::2: icmp_seq=2 ttl=127 time=310 ms ------------------------- 回 386楼(sheldonlin) 的帖子 您好, 是的。 好象没有80端口的监听使用情况喔。 执行以下的命令,再看看: netstat -noa | find ":80" ------------------------- 回 388楼(sheldonlin) 的帖子 您好, 您是想让您的站点能从ipv6的网络里访问到页面内容吗? 从您的命令输出结果来看,好象并没有web进程喔。 关于苹果对于ipv6-only的要求,请看这个指导文档: https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html#//apple_ref/doc/uid/TP40010220-CH213-SW1 ------------------------- 回 391楼(sheldonlin) 的帖子 您好, 那您在运行tomcat后,执行 netstat -noa | find ":8080" 后,有哪些输出结果呢? ------------------------- 回 394楼(sheldonlin) 的帖子 您好, 请尝试检查实例的安全组规则,看是否有阻止外网访问8080端口: https://help.aliyun.com/document_detail/25471.html ------------------------- 回 398楼(sheldonlin) 的帖子 您好, 总结得不错。 现在测试,是可以从外网的ipv6测试机访问的: liujia@hk2:~/test6$ wget -6 kambuzz.com:8080 --2017-08-21 10:51:58--   http://kambuzz.com:8080/ Resolving kambuzz.com (kambuzz.com)... 2001:470:18:8f2::2 Connecting to kambuzz.com (kambuzz.com)|2001:470:18:8f2::2|:8080... connected. HTTP request sent, awaiting response... 200 Length: unspecified [text/html] index.html: Permission denied 如果您的实例是Linux系统的,建议在后台长驻运行一个ping6的命令,如 ping6 ipv6.google.com ,以让您的ipv6隧道地址保持激活的状态,避免如20分钟后ipv6隧道地址ping6不通。 ------------------------- 回 400楼(sheldonlin) 的帖子 您好, 有时您的IPv6隧道地址ping不通, 在ping通时,可以访问到页面的内容,如: ------------------------- 回 402楼(sheldonlin) 的帖子 您好, 不确定具体的原因,但您可以尝试更换到其它的中转服务器,如美国的,看看会不会比目前的香港好些。 ------------------------- 回 405楼(sheldonlin) 的帖子 您好, ping6了几分钟后,可以ping通了。 liujia@hk2:~$ ping6 2001:470:c:67a::2 PING 2001:470:c:67a::2(2001:470:c:67a::2) 56 data bytes 64 bytes from 2001:470:c:67a::2: icmp_seq=232 ttl=123 time=313 ms 64 bytes from 2001:470:c:67a::2: icmp_seq=233 ttl=123 time=313 ms 64 bytes from 2001:470:c:67a::2: icmp_seq=234 ttl=123 time=313 ms 64 bytes from 2001:470:c:67a::2: icmp_seq=235 ttl=123 time=313 ms 64 bytes from 2001:470:c:67a::2: icmp_seq=236 ttl=123 time=315 ms 64 bytes from 2001:470:c:67a::2: icmp_seq=237 ttl=123 time=387 ms 64 bytes from 2001:470:c:67a::2: icmp_seq=238 ttl=123 time=387 ms --- 2001:470:c:67a::2 ping statistics --- 238 packets transmitted, 7 received, 97% packet loss, time 238848ms rtt min/avg/max/mdev = 313.431/335.021/387.851/33.233 ms ------------------------- 回 407楼(sheldonlin) 的帖子 您好, 测试的ping值差不多喔: PING 2001:470:18:94d::2(2001:470:18:94d::2) 56 data bytes 64 bytes from 2001:470:18:94d::2: icmp_seq=1 ttl=127 time=325 ms 64 bytes from 2001:470:18:94d::2: icmp_seq=2 ttl=127 time=325 ms 64 bytes from 2001:470:18:94d::2: icmp_seq=3 ttl=127 time=325 ms 64 bytes from 2001:470:18:94d::2: icmp_seq=4 ttl=127 time=325 ms 64 bytes from 2001:470:18:94d::2: icmp_seq=5 ttl=127 time=325 ms ------------------------- 回 409楼(觅约) 的帖子 您好, 欢迎来到阿里云论坛。 现在测试,访问正常喔: liujia@hk2:~/test6$ wget -6 app.miyueta.com:9088 --2017-08-28 18:25:36--   http://app.miyueta.com:9088/ Resolving app.miyueta.com (app.miyueta.com)... 2001:19f0:6001:213:5400:ff:fe77:5183 Connecting to app.miyueta.com (app.miyueta.com)|2001:19f0:6001:213:5400:ff:fe77:5183|:9088... connected. HTTP request sent, awaiting response... 200 OK Length: 52 [text/html] ------------------------- Re:回 411楼(ios——ot) 的帖子 您好, 我现在从外网为您ping6测试,可ping通,但有丢包。 liujia@hk2:~$ ping6 admin.allti.com.cn PING admin.allti.com.cn(wbnahqs-1-pt.tunnel.tserv25.sin1.ipv6.he.net) 56 data bytes 64 bytes from wbnahqs-1-pt.tunnel.tserv25.sin1.ipv6.he.net: icmp_seq=4 ttl=124 time=566 ms 64 bytes from wbnahqs-1-pt.tunnel.tserv25.sin1.ipv6.he.net: icmp_seq=5 ttl=124 time=545 ms 64 bytes from wbnahqs-1-pt.tunnel.tserv25.sin1.ipv6.he.net: icmp_seq=13 ttl=124 time=539 ms --- admin.allti.com.cn ping statistics --- 16 packets transmitted, 3 received, 81% packet loss, time 15087ms rtt min/avg/max/mdev = 539.496/550.382/566.125/11.400 ms ------------------------- 回 415楼(ios——ot) 的帖子 您好, 有可能。换别的中转服务器,如美国的来对比看看。 ------------------------- 回 437楼(卡乐) 的帖子 版主回复: 没看到相应的安全性评估。 个人想,是这样的:如果您的数据传送开始时,已经是加密的,如https,那隧道转发的服务器也不能读取到数据内容吧? 且,隧道转发的服务商,he.net应该是一家有信誉的公司。 再者,这里的隧道地址设置,目的是帮助APP上架,如果您的APP上架后,可停用隧道地址。 ------------------------- 回 439楼(卡乐) 的帖子 版主回复: 反方向操作哩,如在系统里禁用/删除隧道地址(如netsh int ipv6 delete interface "ip6tunnel")。 ------------------------- 回 443楼(阿凯十三郎) 的帖子 版主回复: 或许您需要检查一下ECS实例的安全组,看是放行了ipv6隧道地址服务器的访问。 目前测试来看,您的ipv6隧道地址从外网是ping6不通的。 --2018-01-25 10:41:07--   http://www.cjnmw.xyz/ Resolving www.cjnmw.xyz (www.cjnmw.xyz)... 2001:470:18:f02::2 Connecting to www.cjnmw.xyz (www.cjnmw.xyz)|2001:470:18:f02::2|:80... failed: Connection timed out. Retrying. liujia@hk2:~/test7$ ping6 2001:470:18:f02::2 PING 2001:470:18:f02::2(2001:470:18:f02::2) 56 data bytes --- 2001:470:18:f02::2 ping statistics --- 21 packets transmitted, 0 received, 100% packet loss, time 20154ms liujia@hk2:~/test7$ ping6 2001:470:18:f02::1 PING 2001:470:18:f02::1(2001:470:18:f02::1) 56 data bytes 64 bytes from 2001:470:18:f02::1: icmp_seq=1 ttl=64 time=1.41 ms 64 bytes from 2001:470:18:f02::1: icmp_seq=2 ttl=64 time=1.40 ms --- 2001:470:18:f02::1 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 1.404/1.409/1.415/0.037 ms ------------------------- 回 448楼(阿凯十三郎) 的帖子 版主回复: 从您的ECS实例能ping通隧道地址服务器的IP,但不代表从隧道地址的服务器能ping通(访问)您的ECS实例喔。 ------------------------- 回 449楼(阿凯十三郎) 的帖子 版主回复: 是哩,看起来,外网已经能通过隧道地址访问到您的apache里了。 您调整了ECS实例的安全组规则吗? ------------------------- 回 452楼(阿凯十三郎) 的帖子 版主回复: 据网友反馈:域名本身的 ipv6 DNS Server 并不重要。 ------------------------- 回 455楼(纪念青春) 的帖子 版主回复: 请试试: netsh int ipv6 delete interface "ip6tunnel" ------------------------- 回 458楼(老黄000001) 的帖子 您好, 图中信息,显示IPv6隧道地址断开状态, 请问您在之前配置隧道地址的命令中,包含的IP是ECS实例的公网IP还是内网IP? 一般来说,应该在命令中写内网IP的,即您图中的看到的172.18.132.2 ------------------------- 回 460楼(尜淇专版) 的帖子 您好, 在He.net里申请隧道地址时,请填写ECS实例的公网IP地址喔。 ------------------------- 回 462楼(潮约) 的帖子 您好, 使用VPC网络的ECS实例,在配置隧道地址时,是需要绑定内网IP,因为公网IP不是在系统里。 如果配置隧道地址时,绑定了内网IP,也无法正常使用的话,建议检查ECS实例安全组规则或Windows防火墙,如将隧道地址服务器的IPv4加到白名单中。

dongshan8 2019-12-02 02:58:13 0 浏览量 回答数 0

回答

前言 这期我想写很久了,但是因为时间的原因一直拖到了现在,我以为一两天就写完了,结果从构思到整理资料,再到写出来用了差不多一周的时间吧。 你们也知道丙丙一直都是创作鬼才来的,所以我肯定不会一本正经的写,我想了好几个切入点,最后决定用一个完整的电商系统作为切入点,带着大家看看,我们需要学些啥,我甚至还收集配套视频和资料,暖男石锤啊,这期是呕心沥血之作,不要白嫖了。 正文 在写这个文章之前,我花了点时间,自己臆想了一个电商系统,基本上算是麻雀虽小五脏俱全,我今天就用它开刀,一步步剖析,我会讲一下我们可能会接触的技术栈可能不全,但是够用,最后给个学习路线。 Tip:请多欣赏一会,每个点看一下,看看什么地方是你接触过的,什么技术栈是你不太熟悉的,我觉得还算是比较全的,有什么建议也可以留言给我。 不知道大家都看了一下没,现在我们就要庖丁解牛了,我从上到下依次分析。 前端 你可能会会好奇,你不是讲后端学习路线嘛,为啥还有前端的部分,我只能告诉你,傻瓜,肤浅。 我们可不能闭门造车,谁告诉你后端就不学点前端了? 前端现在很多也了解后端的技术栈的,你想我们去一个网站,最先接触的,最先看到的是啥? 没错就是前端,在大学你要是找不到专门的前端同学,去做系统肯定也要自己顶一下前端的,那我觉得最基本的技术栈得熟悉和了解吧,丙丙现在也是偶尔会开发一下我们的管理系统主要是VUE和React。 在这里我列举了我目前觉得比较简单和我们后端可以了解的技术栈,都是比较基础的。 作为一名后端了解部分前端知识还是很有必要的,在以后开发的时候,公司有前端那能帮助你前后端联调更顺畅,如果没前端你自己也能顶一下简单的页面。 HTML、CSS、JS、Ajax我觉得是必须掌握的点,看着简单其实深究或者去操作的话还是有很多东西的,其他作为扩展有兴趣可以了解,反正入门简单,只是精通很难很难。 在这一层不光有这些还有Http协议和Servlet,request、response、cookie、session这些也会伴随你整个技术生涯,理解他们对后面的你肯定有不少好处。 Tip:我这里最后删除了JSP相关的技术,我个人觉得没必要学了,很多公司除了老项目之外,新项目都不会使用那些技术了。 前端在我看来比后端难,技术迭代比较快,知识好像也没特定的体系,所以面试大厂的前端很多朋友都说难,不是技术多难,而是知识多且复杂,找不到一个完整的体系,相比之下后端明朗很多,我后面就开始讲后端了。 网关层: 互联网发展到现在,涌现了很多互联网公司,技术更新迭代了很多个版本,从早期的单机时代,到现在超大规模的互联网时代,几亿人参与的春运,几千亿成交规模的双十一,无数互联网前辈的造就了现在互联网的辉煌。 微服务,分布式,负载均衡等我们经常提到的这些名词都是这些技术在场景背后支撑。 单机顶不住,我们就多找点服务器,但是怎么将流量均匀的打到这些服务器上呢? 负载均衡,LVS 我们机器都是IP访问的,那怎么通过我们申请的域名去请求到服务器呢? DNS 大家刷的抖音,B站,快手等等视频服务商,是怎么保证同时为全国的用户提供快速的体验? CDN 我们这么多系统和服务,还有这么多中间件的调度怎么去管理调度等等? zk 这么多的服务器,怎么对外统一访问呢,就可能需要知道反向代理的服务器。 Nginx 这一层做了反向负载、服务路由、服务治理、流量管理、安全隔离、服务容错等等都做了,大家公司的内外网隔离也是这一层做的。 我之前还接触过一些比较有意思的项目,所有对外的接口都是加密的,几十个服务会经过网关解密,找到真的路由再去请求。 这一层的知识点其实也不少,你往后面学会发现分布式事务,分布式锁,还有很多中间件都离不开zk这一层,我们继续往下看。 服务层: 这一层有点东西了,算是整个框架的核心,如果你跟我帅丙一样以后都是从事后端开发的话,我们基本上整个技术生涯,大部分时间都在跟这一层的技术栈打交道了,各种琳琅满目的中间件,计算机基础知识,Linux操作,算法数据结构,架构框架,研发工具等等。 我想在看这个文章的各位,计算机基础肯定都是学过的吧,如果大学的时候没好好学,我觉得还是有必要再看看的。 为什么我们网页能保证安全可靠的传输,你可能会了解到HTTP,TCP协议,什么三次握手,四次挥手。 还有进程、线程、协程,什么内存屏障,指令乱序,分支预测,CPU亲和性等等,在之后的编程生涯,如果你能掌握这些东西,会让你在遇到很多问题的时候瞬间get到点,而不是像个无头苍蝇一样乱撞(然而丙丙还做得不够)。 了解这些计算机知识后,你就需要接触编程语言了,大学的C语言基础会让你学什么语言入门都会快点,我选择了面向对象的JAVA,但是也不知道为啥现在还没对象。 JAVA的基础也一样重要,面向对象(包括类、对象、方法、继承、封装、抽象、 多态、消息解析等),常见API,数据结构,集合框架,设计模式(包括创建型、结构型、行为型),多线程和并发,I/O流,Stream,网络编程你都需要了解。 代码会写了,你就要开始学习一些能帮助你把系统变得更加规范的框架,SSM可以会让你的开发更加便捷,结构层次更加分明。 写代码的时候你会发现你大学用的Eclipse在公司看不到了,你跟大家一样去用了IDEA,第一天这是什么玩意,一周后,真香,但是这玩意收费有点贵,那免费的VSCode真的就是不错的选择了。 代码写的时候你会接触代码的仓库管理工具maven、Gradle,提交代码的时候会去写项目版本管理工具Git。 代码提交之后,发布之后你会发现很多东西需要自己去服务器亲自排查,那Linux的知识点就可以在里面灵活运用了,查看进程,查看文件,各种Vim操作等等。 系统的优化很多地方没优化的空间了,你可能会尝试从算法,或者优化数据结构去优化,你看到了HashMap的源码,想去了解红黑树,然后在算法网上看到了二叉树搜索树和各种常见的算法问题,刷多了,你也能总结出精华所在,什么贪心,分治,动态规划等。 这么多个服务,你发现HTTP请求已经开始有点不满足你的需求了,你想开发更便捷,像访问本地服务一样访问远程服务,所以我们去了解了Dubbo,Spring cloud。 了解Dubbo的过程中,你发现了RPC的精华所在,所以你去接触到了高性能的NIO框架,Netty。 代码写好了,服务也能通信了,但是你发现你的代码链路好长,都耦合在一起了,所以你接触了消息队列,这种异步的处理方式,真香。 他还可以帮你在突发流量的时候用队列做缓冲,但是你发现分布式的情况,事务就不好管理了,你就了解到了分布式事务,什么两段式,三段式,TCC,XA,阿里云的全局事务服务GTS等等。 分布式事务的时候你会想去了解RocketMQ,因为他自带了分布式事务的解决方案,大数据的场景你又看到了Kafka。 我上面提到过zk,像Dubbo、Kafka等中间件都是用它做注册中心的,所以很多技术栈最后都组成了一个知识体系,你先了解了体系中的每一员,你才能把它们联系起来。 服务的交互都从进程内通信变成了远程通信,所以性能必然会受到一些影响。 此外由于很多不确定性的因素,例如网络拥塞、Server 端服务器宕机、挖掘机铲断机房光纤等等,需要许多额外的功能和措施才能保证微服务流畅稳定的工作。 **Spring Cloud **中就有 Hystrix 熔断器、Ribbon客户端负载均衡器、Eureka注册中心等等都是用来解决这些问题的微服务组件。 你感觉学习得差不多了,你发现各大论坛博客出现了一些前沿技术,比如容器化,你可能就会去了解容器化的知识,像**Docker,Kubernetes(K8s)**等。 微服务之所以能够快速发展,很重要的一个原因就是:容器化技术的发展和容器管理系统的成熟。 这一层的东西呢其实远远不止这些的,我不过多赘述,写多了像个劝退师一样,但是大家也不用慌,大部分的技术都是慢慢接触了,工作中慢慢去了解,去深入的。 好啦我们继续沿着图往下看,那再往下是啥呢? 数据层: 数据库可能是整个系统中最值钱的部分了,在我码文字的前一天,刚好发生了微盟程序员删库跑路的操作,删库跑路其实是我们在网上最常用的笑话,没想到还是照进了现实。 这里也提一点点吧,36小时的故障,其实在互联网公司应该是个笑话了吧,权限控制没做好类似rm -rf 、fdisk、drop等等这样的高危命令是可以实时拦截掉的,备份,全量备份,增量备份,延迟备份,异地容灾全部都考虑一下应该也不至于这样,一家上市公司还是有点点不应该。 数据库基本的事务隔离级别,索引,SQL,主被同步,读写分离等都可能是你学的时候要了解到的。 上面我们提到了安全,不要把鸡蛋放一个篮子的道理大家应该都知道,那分库的意义就很明显了,然后你会发现时间久了表的数据大了,就会想到去接触分表,什么TDDL、Sharding-JDBC、DRDS这些插件都会接触到。 你发现流量大的时候,或者热点数据打到数据库还是有点顶不住,压力太大了,那非关系型数据库就进场了,Redis当然是首选,但是MongoDB、memcache也有各自的应用场景。 Redis使用后,真香,真快,但是你会开始担心最开始提到的安全问题,这玩意快是因为在内存中操作,那断点了数据丢了怎么办?你就开始阅读官方文档,了解RDB,AOF这些持久化机制,线上用的时候还会遇到缓存雪崩击穿、穿透等等问题。 单机不满足你就用了,他的集群模式,用了集群可能也担心集群的健康状态,所以就得去了解哨兵,他的主从同步,时间久了Key多了,就得了解内存淘汰机制…… 他的大容量存储有问题,你可能需要去了解Pika…. 其实远远没完,每个的点我都点到为止,但是其实要深究每个点都要学很久,我们接着往下看。 实时/离线/大数据 等你把几种关系型非关系型数据库的知识点,整理清楚后,你会发现数据还是大啊,而且数据的场景越来越多多样化了,那大数据的各种中间件你就得了解了。 你会发现很多场景,不需要实时的数据,比如你查你的支付宝去年的,上个月的账单,这些都是不会变化的数据,没必要实时,那你可能会接触像ODPS这样的中间件去做数据的离线分析。 然后你可能会接触Hadoop系列相关的东西,比如于Hadoop(HDFS)的一个数据仓库工具Hive,是建立在 Hadoop 文件系统之上的分布式面向列的数据库HBase 。 写多的场景,适合做一些简单查询,用他们又有点大材小用,那Cassandra就再合适不过了。 离线的数据分析没办法满足一些实时的常见,类似风控,那Flink你也得略知一二,他的窗口思想还是很有意思。 数据接触完了,计算引擎Spark你是不是也不能放过…… 搜索引擎: 传统关系型数据库和NoSQL非关系型数据都没办法解决一些问题,比如我们在百度,淘宝搜索东西的时候,往往都是几个关键字在一起一起搜索东西的,在数据库除非把几次的结果做交集,不然很难去实现。 那全文检索引擎就诞生了,解决了搜索的问题,你得思考怎么把数据库的东西实时同步到ES中去,那你可能会思考到logstash去定时跑脚本同步,又或者去接触伪装成一台MySQL从服务的Canal,他会去订阅MySQL主服务的binlog,然后自己解析了去操作Es中的数据。 这些都搞定了,那可视化的后台查询又怎么解决呢?Kibana,他他是一个可视化的平台,甚至对Es集群的健康管理都做了可视化,很多公司的日志查询系统都是用它做的。 学习路线 看了这么久你是不是发现,帅丙只是一直在介绍每个层级的技术栈,并没说到具体的一个路线,那是因为我想让大家先有个认知或者说是扫盲吧,我一样用脑图的方式汇总一下吧,如果图片被平台二压了。 资料/学习网站 Tip:本来这一栏有很多我准备的资料的,但是都是外链,或者不合适的分享方式,博客的运营小姐姐提醒了我,所以大家去公众号回复【路线】好了。 絮叨 如果你想去一家不错的公司,但是目前的硬实力又不到,我觉得还是有必要去努力一下的,技术能力的高低能决定你走多远,平台的高低,能决定你的高度。 如果你通过努力成功进入到了心仪的公司,一定不要懈怠放松,职场成长和新技术学习一样,不进则退。 丙丙发现在工作中发现我身边的人真的就是实力越强的越努力,最高级的自律,享受孤独(周末的歪哥)。 总结 我提到的技术栈你想全部了解,我觉得初步了解可能几个月就够了,这里的了解仅限于你知道它,知道他是干嘛的,知道怎么去使用它,并不是说深入了解他的底层原理,了解他的常见问题,熟悉问题的解决方案等等。 你想做到后者,基本上只能靠时间上的日积月累,或者不断的去尝试积累经验,也没什么速成的东西,欲速则不达大家也是知道的。 技术这条路,说实话很枯燥,很辛苦,但是待遇也会高于其他一些基础岗位。 所实话我大学学这个就是为了兴趣,我从小对电子,对计算机都比较热爱,但是现在打磨得,现在就是为了钱吧,是不是很现实?若家境殷实,谁愿颠沛流离。 但是至少丙丙因为做软件,改变了家庭的窘境,自己日子也向小康一步步迈过去。 说做程序员改变了我和我家人的一生可能夸张了,但是我总有一种下班辈子会因为我选择走这条路而改变的错觉。 我是敖丙,一个在互联网苟且偷生的工具人。 创作不易,本期硬核,不想被白嫖,各位的「三连」就是丙丙创作的最大动力,我们下次见! 本文 GitHub https://github.com/JavaFamily 已经收录,有大厂面试完整考点,欢迎Star。 该回答来自:敖丙

剑曼红尘 2020-03-06 11:35:37 0 浏览量 回答数 0

问题

【javascript学习全家桶】934道javascript热门问题,阿里百位技术专家答疑解惑

管理贝贝 2019-12-01 20:07:22 6202 浏览量 回答数 1
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 企业建站模板