当前位置: 首页 > news >正文

优秀集团网站设计网站怎么做会员系统

优秀集团网站设计,网站怎么做会员系统,微信公众号运营团队,九江有限公司文章目录 前言一、如何选择序列化协议#xff1f;二、Netty 的零拷贝实现#xff1f;总结 前言 如何选择序列化协议#xff1f;Netty 的零拷贝实现#xff1f; 一、如何选择序列化协议#xff1f; 具体场景 对于公司间的系统调用#xff0c;如果性能要求在 100ms 以上的… 文章目录 前言一、如何选择序列化协议二、Netty 的零拷贝实现总结 前言 如何选择序列化协议Netty 的零拷贝实现 一、如何选择序列化协议 具体场景 对于公司间的系统调用如果性能要求在 100ms 以上的服务基于 XML 的 SOAP 协议是一个值得考虑的方案 基于 Web browser 的 Ajax以及 Mobile app 与服务端之间的通讯JSON 协议是首选。对于性能要求不太高或者以动态类型语言为主或者传输数据载荷很小的的运用场景JSON也是非常不错的选择。 对于调试环境比较恶劣的场景采用 JSON 或 XML 能够极大的提高调试效率降低系统开发成本。 当对性能和简洁性有极高要求的场景ProtobufThriftAvro 之间具有一定的竞争关系。 对于 T 级别的数据的持久化应用场景Protobuf 和 Avro 是首要选择。如果持久化后的数据存储在 hadoop 子项目里Avro 会是更好的选择。 对于持久层非 Hadoop 项目以静态类型语言为主的应用场景Protobuf 会更符合静态类型语言工程师的开发习惯。由于 Avro 的设计理念偏向于动态类型语言对于动态语言为主的应用场景Avro 是更好的选择。 如果需要提供一个完整的 RPC 解决方案Thrift 是一个好的选择。 如果序列化之后需要支持不同的传输层协议或者需要跨防火墙访问的高性能场景Protobuf 可以优先考虑。 protobuf 的数据类型有多种bool、double、float、int32、int64、string、bytes、enum、message。protobuf 的限定符required: 必须赋值不能为空、optional:字段可以赋值也可以不赋值、repeated: 该字段可以重复任意次数包括 0 次、枚举只能用指定的常量集中的一个值作为其值 protobuf 的基本规则每个消息中必须至少留有一个 required 类型的字段、包含 0 个或多个 optional 类型的字段repeated 表示的字段可以包含 0 个或多个数据[1,15]之内的标识号在编码的时候会占用一个字节常用[16,2047]之内的标识号则占用 2 个字节标识号一定不能重复、使用消息类型也可以将消息嵌套任意多层可用嵌套消息类型来代替组。 protobuf 的消息升级原则不要更改任何已有的字段的数值标识不能移除已经存在的required 字段optional 和 repeated 类型的字段可以被移除但要保留标号不能被重用。新添加的字段必须是 optional 或 repeated。因为旧版本程序无法读取或写入新增的required 限定符的字段。 编译器为每一个消息类型生成了一个.java 文件以及一个特殊的 Builder 类该类是用来创建消息类接口的。如UserProto.User.Builder builder UserProto.User.newBuilder();builder.build() Netty 中的使用ProtobufVarint32FrameDecoder 是用于处理半包消息的解码类ProtobufDecoder(UserProto.User.getDefaultInstance())这是创建的 UserProto.java 文件中的解码类ProtobufVarint32LengthFieldPrepender 对 protobuf 协议的消息头上加上一个长度为32 的整形字段用于标志这个消息的长度的类ProtobufEncoder 是编码类将 StringBuilder 转换为 ByteBuf 类型copiedBuffer()方法 二、Netty 的零拷贝实现 Netty 的接收和发送 ByteBuffer 采用 DIRECT BUFFERS使用堆外直接内存进行 Socket 读写不需要进行字节缓冲区的二次拷贝。堆内存多了一次内存拷贝JVM 会将堆内存Buffer 拷贝一份到直接内存中然后才写入 Socket 中。ByteBuffer 由 ChannelConfig 分配而 ChannelConfig 创建 ByteBufAllocator 默认使用 Direct Buffer CompositeByteBuf 类可以将多个 ByteBuf 合并为一个逻辑上的 ByteBuf, 避免了传统通过内存拷贝的方式将几个小 Buffer 合并成一个大的 Buffer。addComponents 方法将 header与 body 合并为一个逻辑上的 ByteBuf, 这两个 ByteBuf 在 CompositeByteBuf 内部都是单 独存在的, CompositeByteBuf 只是逻辑上是一个整体 通过 FileRegion 包装的 FileChannel.tranferTo 方法 实现文件传输, 可以直接将文件缓冲区的数据发送到目标 Channel避免了传统通过循环 write 方式导致的内存拷贝问题。 通过 wrap 方法, 我们可以将 byte[] 数组、ByteBuf、ByteBuffer 等包装成一个 Netty ByteBuf 对象, 进而避免了拷贝操作。 Selector BUG若 Selector 的轮询结果为空也没有 wakeup 或新消息处理则发生空轮询CPU 使用率 100% Netty 的解决办法对 Selector 的 select 操作周期进行统计每完成一次空的 select 操作进行一次计数若在某个周期内连续发生 N 次空轮询则触发了 epoll 死循环 bug。重建 Selector判断是否是其他线程发起的重建请求若不是则将原 SocketChannel 从旧的 Selector 上去除注册重新注册到新的 Selector 上并将原来的 Selector 关闭。 总结 如何选择序列化协议Netty 的零拷贝实现
http://www.hkea.cn/news/14535427/

相关文章:

  • 建设网站基本流程食品网站开发毕业设计
  • 建设网站的语言微信怎么建公众号
  • 建设网站宣传页网络推广外包业务怎么样
  • 呼市做引产z首大网站wordpress插件 图片
  • 福建省建设银行招聘网站adsl做网站
  • 专门做摩托车的网站开封建网站的公司
  • 房产中介 网站开发建站之星怎么免费做网站
  • 网站建设预算项目游戏网站制作模板
  • 网站建设需要具备哪些知识网站加载页模板
  • 电子购物网站建设视频搜附近的人用什么软件
  • 建立企业网站的形式有哪几种网站dns设置
  • 适合做公司网站的cms上海松江做网站
  • 百度统计登录做seo要明白网站内容乃重中之重
  • 使用flash做网站互联网应用有哪些?
  • 商城网站建设行业现状海安网站设计
  • 单位网站建设注意事项江苏省建设斤网站
  • 网站里的内容都是什么作用wordpress怎么发长文章
  • 广州市专业网站建设用图片设置网站首页
  • 做捐款网站网站优化公司服务
  • 拿网站的文章做外链wordpress程序建站
  • 房产集团公司网站建设方案网站换空间不换域名对seo有影响吗
  • 昆明seo博客南网站建设做网站编程的待遇
  • 企业宣传册免费模板网站wordpress faq
  • h5网站制作价格网站备案花钱吗
  • 眉山建设中等职业技术学校 网站城阳网站制作
  • 设计师的网站惠州市住房和城乡建设厅网站
  • 英文广告网站模板免费下载竞价托管
  • 成都网站建设常见问题禁止wordpress自动更新
  • 深圳设计网站的公司深圳设计网页
  • 上海门户网站建设方案如何做2级网站