1-Noah-Chen-连接世界的Python社区
0 码力 | 24 页 | 2.98 MB | 1 年前3Golang在接入层长连接服务中的实践-黄欣
Golang 在接入层长连接服务中的实践 黄欣 基础平台-架构部 目录 • 背景 • 架构 • 心得 目录 • 架构 • 心得 背景—why 长连接? • 业务场景 – 大量实时计算 • 司机乘客撮合 • 实时计价 – 高频度的数据交互 • 坐标数据 • 计价数据 – App和服务端双向可达 • 上行(抢单) • 下行(派单) 背景—why golang? • 开发效率 rsp || nil So easy, So efficient 心得—coding—实现 • what’s diff? – conn svr • 常驻内存,内存中有个大连接对象map(资源问题) • 请求都是基于连接的(如果模块间存在资源的互相引用,当资源变更的情况 下,容易发生panic)(竟态问题) • 对象编程 – 封装:conn资源(包括goruntine)作为结构体封装起来,保证所有资源 statusLoop() 心得—profiling • Timer优化 • Channel使用优化 心得—timer优化 • 为什么需要优化? – 万级别的连接 – 每个连接上大量的定时任务(心跳检测,注册检测,认证检测) 实际情况:当10w左右连接,什么数据不收发,只有定时器检测心跳超时,cpu 能耗掉一个core • 怎么优化? – 特点: • 秒级别定时任务 • 范围最多60s – 方案:0 码力 | 31 页 | 1.67 MB | 1 年前3Apache Shiro 1.2.x Reference Manual 中文翻译
判断用户是否被授予完成某个操作的权限 在非 web 或 EJB 容器的环境下可以任意使用Session API 可以响应认证、访问控制,或者 Session 生命周期中发生的事件 可将一个或以上用户安全数据源数据组合成一个复合的用户 "view"(视图) 支持单点登录(SSO)功能 支持提供“Remember Me”服务,获取用户关联信息而无需登录 … 等等——都集成到一个有凝聚力的易于使用的API。 某个用户是否具有某个操作的使用权限。 Session Management(会话管理):特定于用户的会话管理,甚至在非web 或 EJB 应 用程序。 Cryptography(加密):在对数据源使用加密算法加密的同时,保证易于使用。 还有其他的功能来支持和加强这些不同应用环境下安全领域的关注点。特别是对以下的功能 支持: Web支持:Shiro 提供的 web 支持 api ,可以很轻松的保护 Shiro 1.2.x Reference Manual 中文翻译 17 2. Tutorial 教程 但这个程序太简单了,你可能会问自己,“如果我不想使用 INI 用户帐号,而希望连接更为复 杂的用户数据源呢?” 解决这些问题需要更深入地了解 并理解Shiro 的架构和配置机制,我们将在下一节 Architecture 中介绍。 Apache Shiro 1.2.x Reference0 码力 | 196 页 | 2.34 MB | 1 年前3美团点评2018技术年货
演进二:LruCache增加时效清退机制 演进二:LruCache增加时效清退机制 在业务场景中,Redis中的广告数据有可能做修改。服务本身作为数据的使用方,无法感知到数据源的变 化。当缓存的命中率较高或者部分数据在较长时间内多次命中,可能出现数据失效的情况。即数据源发生 了变化,但服务无法及时更新数据。针对这一业务场景,增加了时效清退机制。 时效清退机制的组成部分有三点:设置缓存数据过期时间,缓存数据单元增加时间戳以及查询中的时效性 >再新建一个客户端链接->再断开链接。 如上图所示,一次 Connect 和 Disconnect 为一次连接的建立与关闭,上图绿色框框的日志分别是两次 连接的生命周期。我们可以看到,内存每次都是在连接被关闭的的时候暴涨 256B,然后也不释放。走到 这里,问题进一步缩小,肯定是连接被关闭的时候,触发了框架的一个Bug,而且这个Bug在触发之前分 配了 256B 的内存,随着Bug被触发, Disconnect 事件(客户端WebSocket连接关闭时会调用到这里),基本上可以确定,在 Disconnect 事件前后申请的内存并没有释放。 在使用 idea debug 时,要选择只挂起当前线程,这样我们在单步跟踪的时候,控制台仍然可以看到堆外 内存统计线程在打印日志。 Netty堆外内存泄露排查盛宴 - 美团技术团队 在客户端连接上之后然后关闭,断点进入到 onDisconnect0 码力 | 229 页 | 61.61 MB | 1 年前3Apache Shiro参考手册中文版
在任何环境下使用 Session API,即使没有 Web 或 EJB 容器。 在身份验证,访问控制期间或在会话的生命周期,对事件作出反应。 聚集一个或多个用户安全数据的数据源,并作为一个单一的复合用户“视图”。 启用单点登录(SSO)功能。 为没有关联到登录的用户启用"Remember Me"服务 … 以及更多——全部集成到紧密结合的易于使用的 目录。然后在新目录下创建包含以下内容的 shiro.ini 文件: 如你所见,这个配置基本上建立了一小组静态用户帐户,对于我们的第一个应用程序已经足够了。在后面的章节中, 你将看到我们如何使用更复杂的用户数据源,如关系数据库,LDAP 的 AcitveDirectory,以及更多。 Referencing the Configuration 现在我们已经定义好了一个 INI 文件,我们可以在我们的教程应用程序类中创建 Shiro 的主要设计理念,Subject 和 SecurityManager。 但这是一个相当简单的应用程序。你可能已经问过你自己,“如果我不想使用 INI 用户帐户,而是要连接到一个更 复杂的用户数数据源,该怎么办呢?”。 要回答这个问题,需要对 Shiro 的架构和支持的配置机制有更深一些的理解。我们下面将涉及到 Shiro 的架构。 Apache Shiro Architecture0 码力 | 92 页 | 1.16 MB | 1 年前3Java 应用与开发 - 高级 I/O 编程
原理 基础 I/O 流 常用 I/O 流类型 I/O 应用 Java I/O 原理 O I/O(Input/Output)基本概念 ▶ 数据源(Data Source) ▶ 数据宿(Data Sink) ▶ 流(Stream) Java 中把不同的数据源与程序间的数据传输都抽象表述为 流,java.io 包中定义了多种 I/O 流类型实现数据 I/O 功能。 大纲 Java I/O 原理 基础 I/O 应用 Java I/O 流的分类 O 根据数据流所关联的是数据源还是其他数据流 可分为节点流(Node Stream)和处理流(Processing Stream)。 ▶ 节点流直接连接到数据源; ▶ 处理流是对一个已存在的流的连接和封装,通过所封装的流 的功能调用实现增强的数据读/写功能,处理流并不直接连 到数据源。 Howareyou? Imissyou. h o w w 文件 read() 节点流FileReader 处理流BufferedReader readLine() 节点流与处理流的连接 大纲 Java I/O 原理 基础 I/O 流 常用 I/O 流类型 I/O 应用 Java I/O 流的分类 O 按传输数据的“颗粒大小” 可分为字符流(Character Stream)和字节流(Byte Stream)。 ▶ 字节流以字节为单位传输数据,每次传送一个或多个字节。0 码力 | 27 页 | 609.17 KB | 1 年前3Nacos架构&原理
9% 推送完成;10w 级,SLA 承诺 1w 实例上下线 3s,99.9% 推送完成;100w 级别,SLA 承诺 1w 实例上下线 9s 99.9% 推送完成。 规模:十万级服务/配置,百万级连接,具备强大扩展性。 15 > 简介 Nacos 生态 Nacos 几乎支持所有主流语言,其中 Java/Golang/Python 已经支持 Nacos 2.0 长链接协议,能 最大限度发挥 就是⼀个配置项。 配置集(Configuration Set) ⼀组相关或者不相关的配置项的集合称为配置集。在系统中,⼀个配置文件通常就是⼀个配置集, 包含了系统各个方面的配置。例如,⼀个配置集可能包含了数据源、线程池、日志级别等配置项。 命名空间(Namespace) 用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置。 Namespace 的常用 profiles.active}-${file-extension} 配置快照(Configuration Snapshot) Nacos 的客户端 SDK 会在本地生成配置的快照。当客户端无法连接到 Nacos Server 时,可以使 用配置快照显示系统的整体容灾能力。配置快照类似于 Git 中的本地 commit,也类似于缓存,会 在适当的时机更新,但是并没有缓存过期(expiration)的概念。0 码力 | 326 页 | 12.83 MB | 9 月前3《Java 应用与开发》课程讲义 - 王晓东
String myNumber = ”1234.56”; 2 float myFloat = Float.parseFloat(MyNumber); 字符串可用加号“+”来实现连接操作。若其中某个操作数不是字符串,该操作在 连接之前会自动将其转换成字符串。所以可用加号来实现自动的转换。 示例代码:数值型数据转换成字符串数据示例 1 int myInt = 1234; //定义整形变量MyInt str1.substring(2); //str2 = ”dfzxc” 2 String str3 = str1.substring(2,5) ; //str3 = ”dfz” 示例代码:字符串连接 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . println(s); 14 s = in.readLine(); 15 } 16 in. close (); // 关闭 BufferedReader 输入流 17 out.close (); // 关闭连接文件的 PrintWriter 输出流 18 } catch (IOException e) { 19 e.printStackTrace(); 20 } 21 } 22 } 对上述代码的几点说明如下:0 码力 | 330 页 | 6.54 MB | 1 年前3Go Web编程
s 转换为 []byte 类型 c[0] = 'c' s2 := string(c) // 再转换回 string 类型 fmt.Printf("%s\n", s2) Go中可以使用+操作符来连接两个字符串: s := "hello," m := " world" a := s + m fmt.Printf("%s\n", a) 修改字符串也可写为: s := "hello" s 后通过IP地址找到IP对应的服务器后,要求建立TCP连接,等浏览 器发送完HTTP Request(请求)包后,服务器接收到请求包之后才开始处理请求包,服务器调用自身服务,返回HTTP Response(响应)包;客户端收到来自服务器的响应后开始渲染这个Response包里的主体(body),等收到全部的内 容随后断开与该服务器之间的TCP连接。 图3.1 用户访问一个Web站点的过程 TTP协议与客户端通信。这个客户端通常指的是Web浏览器(其实手机端 客户端内部也是浏览器实现的)。 Web服务器的工作原理可以简单地归纳为: 客户机通过TCP/IP协议建立到服务器的TCP连接 客户端向服务器发送HTTP协议请求包,请求服务器里的资源文档 服务器向客户机发送HTTP协议应答包,如果请求的资源包含有动态语言的内容,那么服务器会调用动态语言 的解释引擎负责处理“动态内容”,并将处理得到的数据返回给客户端0 码力 | 295 页 | 5.91 MB | 1 年前3大规模高性能区块链架构设计模式与测试框架-李世敬
术相互促进,融合发展,共同开创更大价值空间,加快新兴技术商业落地 利用区块链的去中心化、数据 不能篡改的特性,解决制约云 计算发展的“可信、可靠、可 控”的问题。 融入大数据采集和共享中,作 为数据源接入大数据分析平台。 强化分布式数据存 储和边缘计算能力, 拓展物联安全边界 和应用范围。 为训练深度学习系统提供可信数据, 优化分析决策的准确性和可信性。 人工智能 区块链 云计算 锚节点 按需可扩展多层⼦链,基础⼦链为 扩展⼦链提供存证、互通等能⼒ 共识节点 ⾮共识节点 轻节点 轻客户端 共识节点 节点数量有限,参与交易的共识,存储全 量数据,节点间采⽤GRPC全连接⽅式互联 ⾮共识节点 节点数量较多,不参与共识,存储全量数 据,节点间使⽤gossip协议同步数据 轻节点 节点数量较多,存储部分数据, ⽤于交易的证明验证 轻客户端 节点数量较多,⼀般为物联⽹终端 Pacemaker机制保证系统活性 区块链平台关键技术-共识算法 20 趣链科技 版权所有 ©2016-2021 全连接 双向通信 • 统⼀配置 • ⾼效转发 • 并发能⼒强 全连接 双向通信 ⽹络⾃发现 ⾃适应路由 跨域转发 • 简化配置 • 动态调整 • 跨域通信 全连接转发策略 ⾃发现转发策略 区块链平台关键技术-自发现网络 21 趣链科技 版权所有 ©2016-20210 码力 | 39 页 | 56.58 MB | 1 年前3
共 351 条
- 1
- 2
- 3
- 4
- 5
- 6
- 36