加入收藏 | 设为首页 | 会员中心 | 我要投稿 孝感站长网 (https://www.0712zz.com.cn/)- 运营、云管理、管理运维、云计算、大数据!
当前位置: 首页 > 站长资讯 > 动态 > 正文

Pod 如何获取IP地址

发布时间:2021-02-04 15:43:37 所属栏目:动态 来源:互联网
导读:可以将顶层视为具体的用户体验(例如移动功能),将底层视为通用的业务功能(例如帐户管理或市场行程)。层仅取决于其下的层,这为我们提供了一种有用的启发式方法,可以思考影响范围和区域集成等问题。 值得注意的是,功能经常会从这个图表中 向下 移动,从

可以将顶层视为具体的用户体验(例如移动功能),将底层视为通用的业务功能(例如帐户管理或市场行程)。层仅取决于其下的层,这为我们提供了一种有用的启发式方法,可以思考影响范围和区域集成等问题。

值得注意的是,功能经常会从这个图表中 "向下 "移动,从具体到更普遍。可以想象,一个简单的功能,随着需求的变多,最终会变成越来越多的平台。事实上,这种向下迁移是意料之中的,Uber的许多核心业务平台一开始都是针对骑手或司机的功能,随着我们开发出更多的业务线,它们也有了更多的依赖性,就会变得越来越通用(比如Uber Eats或Uber Freight)。

在Uber内部,我们建立了以下五个层次。

  1.  基础设施层。 提供任何工程项目都可以使用的功能。这是Uber对诸如存储或网络等重大工程问题的处理。
  2.  业务层。 提供应用可以使用的Uber功能,但并非特定于特定产品类别或业务线(LOB)的功能,例如乘车,进餐或货运。
  3.  产品层。 提供与特定产品类别或LOB相关但与移动应用程序无关的功能,例如由多个面向应用程序的Rides所利用的“请求乘车”逻辑(Rider,Rider“ Lite”,m.uber.com)等)。
  4.  演示层。 提供直接与面向消费者的应用程序(移动/网络)中存在的功能相关的功能。
  5.  边缘层。 将Uber服务安全地暴露给外界。该层也支持移动应用程序。

每层代表着越来越具体的功能分组,并且影响半径越来越小(或者换句话说,更少的组件取决于该层中的功能)。
 

看到这,一切就都解释通了,非常简单,就只是申请内存这一步的区别而已。但对于我们这些什么简单的事情都要包装成高端大气话术的程序员来说,还是要想办法装一下,我们总结出使用 embstr 编码相比于 raw 编码的好处:

  •  embstr 只申请了一次内存,而 raw 需要申请两次,因此节约了一次申请内存的消耗
  •  释放 embstr 只需要释放一次内存,而 raw 需要两次,因此节约了一次释放内存的消耗
  •  embstr 的 redisObject 和 sdshdr 放在一块连续的内存里,因此更能利用 缓存 带来的优势

怎么样,源码级的理解,加上迷倒面试官的总结话术,够意思吧。

不同编码类型的条件

上个部分我们通过字符串,观察了不同的编码类型,也理解了为什么要有不同的编码类型的实现。接下来我们总结下其他的对象与编码类型,原理就不深入源码分析了,和字符串的基本思想是一样的。

字符串的编码类型

  •  int:8 个字节的长整型
  •  embstr:小于等于 39 字节的字符串
  •  raw:大于 39 字节的字符串

哈希的编码类型

  •  ziplist:元素个数小于 512,且所有值都小于 64 字节
  •  hashtable:除上述条件外

列表的编码类型

  •  ziplist:元素个数小于 512,且所有值都小于 64 字节
  •  hashtable:除上述条件外

(编辑:孝感站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读