视频聊天双方都要扣流量吗34分钟用多少流量

参与团队:奋斗才是出路

微信视頻聊天双方都要扣流量吗一个小时的流量200~400M之间bai语音聊天要60M左右,这个跟网速有关网速快,画面流畅流量就大,否则画面卡的时候流量就小一点。所du以不是一个固定值

1、语音,手机微信语音是按zhi时间来收费的基本上是按照0.9-1.2K每秒这样的流量收费方式来进行。

2、攵字文字流量的计算方dao式是按照条来算的,基本上1M的流量可以发1000条文字消息

3、图片,图片流量根据原来图片的质量压缩在50-200K每一张,基本上是按照这样的方式来收取流量的

4、视频,视频流量根据视频质量压缩程度基本上是按照20-30K每一秒计算流量的。

你对这个回答嘚评价是

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案

}

点击上方[全栈开发者社区]右上角[...][设为星标?]

这几年在 Java 工程师招聘时会看到很多人的简历都写着使用了 Spring Cloud 做微服务实现,使用 Docker 做自动化部署并且也会把这些做为自己嘚亮点。

而比较有趣的这其中以小公司出来的人为绝大多数大的公司出来的人简历上倒是很少提这些东西。

对于我自己来说从 2015 年就开始关注这一块,看过马丁·福勒最开始的关于微服务的论文、也看过不少对微服务的论证的英文文章和书,也研究过 Spring Cloud、Sofa 等开源实现以及 Service Mesh

栲虑到我们公司研发团队人力不足、基础设施不完善,当初是没有推行微服务的

但随着看到上述的那种简历越来越多,有时候我也会疑問:难道真的不用微服务就落后了吗公司的同事如果不掌握这些就真的没有竞争力了吗。

而随着最近公司业务的逐步提升研发人员越來越多,借着在梳理公司的微服务落地计划时也梳理了一下微服务的相关知识点,也是本文的主要内容

开篇之前先声明我对微服务的幾点态度:

  • 架构模式有很多,微服务不是唯一的选择也不是什么银弹国内绝大多数中小公司引入微服务都是在盲目追新,也能看出做此種技术选型的工程师基础架构素质的不足

  • “你必须长的足够高才能使用微服务”。微服务基础设施尤其是容器技术、自动化部署、自動化测试这些不完备,微服务形同虚设不会带来什么质的提升。

  • 微服务架构的关键不在于具体的实现而在于如何合理地划分服务边界鉯及组织架构是否相匹配。不考虑研发团队的规模和组成就盲目上微服务是不良的技术选型

  • Spring Boot 是 Spring 全家桶的上层封装,并不是什么崭新的技術也不是什么值得成为自己杀手锏的技术。

2014 年由 Martin Fowler 与 James Lewis 共同提出了微服务的概念,定义了微服务架构风格是一种通过一套小型服务来开发單个应用的方法每个服务运行在自己的进程中,并通过轻量级的机制进行通讯(HTTP API)

对比 SOA,微服务可以看做是 SOA 的子集是轻量级的 SOA,粒喥更细的服务独立进程、数据分离,更注重敏捷、持续交付、DevOps 以及去中心化实践

  • 关注分离:控制与逻辑相分离

  • 端点智能化和哑管道: 控淛逻辑都在端点,管道仅仅是传输

  • 语言和数据的去中心化控制

综合来看其优缺点如下:

  • 优点:模块的强边界;独立部署;技术选型的多樣性。

  • 缺点:分布式带来编程复杂度远程调用的消耗;舍弃强一致性,实现最终一致性;操作复杂性要求有一个成熟的运维团队或者运維基础设施

是否选择微服务取决于你要设计的系统的复杂度。微服务是用来把控复杂系统的但是随之而来的就是引入了微服务本身的複杂度。

需要解决包括自动化部署、监控、容错处理、最终一致性等其他分布式系统面临的问题即使已经有一些普遍使用的解决方案,泹是仍然是有不小的成本的

生产力和复杂度的关系如图所示,可见系统越复杂微服务带来的收益越大。此外无论是单体应用还是微垺务,团队的技能都需要能够把控住

马丁·福勒的一个观点是:除非管理单体应用的成本已经太复杂了(太大导致很难修改和部署),否则都不要考虑微服务

大部分应用都应该选择单体架构,做好单体应用的模块化而不是拆分成服务

因此,系统一开始采用单体架构莋好模块化,之后随着系统变得越来越复杂、模块/服务间的边界越来越清晰再重构为微服务架构是一个合理的架构演化路径。

四个可以栲虑上微服务的情况:

  • 多人开发一个模块/项目提交代码频繁出现大量冲突。

  • 模块间严重耦合互相依赖,每次变动需要牵扯多个团队單次上线需求太多,风险大

  • 主要业务和次要业务耦合,横向扩展流程复杂

  • 微服务 ,根据第一级目录做反向路由 /trade

    每一级目录,如 user、trade 对應一个服务的域名此外,API 网关也可以有服务编排的功能(不推荐)

    接口框架:规范服务之间通讯使用的数据格式、解析包、自解释文檔,便于服务使用方快速上手等

    配置中心: 运行时配置管理能够解决动态修改配置并批量生效的问题。包括配置版本管理、配置项管理、節点管理、配置同步等

    持续交付:包括持续集成、自动化部署等流程。目的就是小步迭代快速交付。

    持续集成:这一部分并非是微服務特定的对于之前的单体应用,此部分一般来说也是必要的

    主要是指通过自动化手段,持续地对代码进程编译构建、自动化测试以嘚到快速有效的质量反馈,从而保证代码的顺利交付

    自动化测试包括代码级别的单元测试、单个系统的集成测试、系统间的接口测试。

    洎动化部署:微服务架构节点数动辄上百上千,能够提高部署速度和部署频率从而保证持续交付。

    包括版本管理、资源管理、部署操莋、回滚操作等功能而对于微服务的部署方式,包括蓝绿部署、滚动部署以及金丝雀部署

    服务监控:微服务架构下节点数目众多,需偠监控的机器、网络、进程、接口等的数量大大增加需要一个强大的监控系统,能够提供实时搜集信息进行分析以及实时分析之上的预警

    包括监控服务的请求次数、响应时间分布、最大/最小响应值、错误码分布等。

    服务跟踪:跟踪一个请求的完整路径包括请求发起时間、响应时间、响应码、请求参数、返回结果等信息,也叫做全链路跟踪

    通常的服务可以和服务监控做在一起,宏观信息由服务跟踪呈現微观单个服务/节点的信息由服务监控呈现。服务跟踪目前的实现理论基本都是 Google 的 Dapper 论文

    服务安全:内网之间的微服务调用原则上讲应該是都可以互相访问写,一般并不需要权限控制但有时候限于业务要求,会对接口、数据等方面有安全控制的要求

    此部分可以以配置嘚方式存在于服务注册中心中,和服务绑定在请求时由做为服务提供者的服务节点进行安全策略控制。配置则可以存储在配置中心以方便动态修改

    在微服务数量很少的情况下,以上基础设施的优先级自上而下降低否则,仅仅依赖人工操作则投入产出比会很低。

    还需偠提到的是 Docker 容器技术虽然这个对于微服务并不是必须的,但是容器技术轻量级、灵活、与应用依存、屏蔽环境差异的特性对于持续交付嘚实现是至关重要的即使对于传统的单体应用也能够给其带来交付效率的大幅提升。

    在引入微服务之后传统的单体应用变为了一个一個服务,之前一个应用直接提供接口给客户端访问的架构不再适用

    微服务架构下,针对不同设备的接口做为 BFF 层(Backend For Frontend)也叫做用户体验适配层,负责聚合、编排微服务的数据转换成前端需要的数据

    服务之间的调用则在允许的情况下(允许延迟)尽可能使用异步消息传递方式,如此形成面向用户体验的微服务架构设计模式

    • 后台采用微服务架构,微服务可以采用不同的编程语言和不同的存储机制

    • 前台采用 BFF 模式对不同的用户体验(如桌面浏览器,Native App平板响应式 Web)进行适配。

    • BFF 不能过多过多会造成代码逻辑重复冗余。

    • 可以将网关承担的功能洳 Geoip、限流、安全认证等跨横切面功能和 BFF 做在同一层,虽然增加了 BFF 层的复杂性但能够得到性能优势。

    微服务架构最核心的环节主要是对垺务的横向拆分。服务拆分就是将一个完整的业务系统解耦为服务服务需要职责单一,之间没有耦合关系能够独立开发和维护。

    服务拆分不是一蹴而就的需要在开发过程中不断地理清边界。在完全理清服务之前尽量推迟对服务的拆分,尤其是对数据库的拆分

    其中,对于无法修改的遗留系统采用绞杀者模式:在遗留系统外面增加新的功能做成微服务方式,而不是直接修改原有系统逐步的实现对咾系统替换。

    拆分过程需要遵守的规范如下:

    • 先少后多、先粗后细(粒度)

    • 服务纵向拆分最多三层两次调用:Controller、组合服务、基础服务

    • 仅僅单向调用,禁止循环调用

    • 串行调用改为并行调用或者异步化

    • 接口数据定义严禁内嵌透传

    • 先拆分服务,等服务粒度确定后再拆分数据库

    上面讲述了微服务架构的众多基础设施,如果每一个基础设施都需要自己开发的话是非常巨大的开发工作目前市面上已经有不少开源嘚微服务框架可以选择。

    Spring Boot 是用来简化新 Spring 应用的初始搭建以及开发过程的其虽然不是微服务框架,但其设计的初衷本质就是微应用的底层框架因此非常适合用于微服务基础设施的开发以及微服务的应用开发

    尤其对于 Spring 技术栈的团队来说基于 Spring Boot 开发微服务框架和应用是自然洏然的一个选择。

    Dubbo 是阿里开源的服务治理框架其出现在微服务理念兴起之前,可以看做是 SOA 框架的集大成之作

    但其仅仅包含了微服务基礎设施的部分功能,诸如熔断、服务跟踪、网关等都没有实现:

    • 服务发现:服务发布、订阅、通知

    • 高可用策略:失败重试(Failover)、快速失敗(Failfast)、资源隔离 - 负载均衡 :最少活跃连接、一致性 Hash、随机请求、轮询等。

    • 其他 :调用统计、访问日志等

    Spring Cloud 是基于Spring Boot 实现的微服务框架,也鈳以看做一套微服务实现规范

    基本涵盖了微服务基础设施的方方面面,包括配置管理、服务发现、断路器、智能路由、微代理、控制总線、全局锁、决策竞选、分布式会话和集群状态管理等

    其基于 Spring 生态,社区支持非常好但其很多组件都没有经过生产环境验证,需要慎偅选择

    基于 Netflix 的大规模使用,其中的已经被广泛使用的组件包括:

    • Eureka:服务注册和服务发现

    • Ribbon:弹性而智能的进程间和服务通讯机制客户端負载均衡

    • Hystrix:熔断器,在运行时提供延迟和容错的隔离

    上述的微服务框架都是侵入式的服务化的过程都需要进行代码改造。Service Mesh 则是下一代微垺务架构最明显的特征就是无入侵。采用 Sidecar 模式来解决系统架构微服务化后的服务间通信和治理问题

    目前主流的开源实现包括:

    • Linkerd 和 Envoy:以 Sidecar 為核心,关注如何做好 Proxy并完成一些通用控制平面的功能。缺乏对这些 Sidecar 的管理和控制

    • 相比起来,Istio 有巨头背景功能强大,但可用性和易鼡性一直不高Conduit 则相对简单、功能聚焦。

    限于 Service Mesh 带来的性能延迟的开销以及 Sidecar 对分布复杂性的增加其对大规模部署(微服务数目多)、异构复杂(茭互协议/开发语言类型多)的微服务架构带来的收益会更大。

    蚂蚁金服开源的构建金融级分布式架构的一套中间件包括微服务开发框架、RPC 框架、服务注册中心、全链路追踪、服务监控、Service Mesh 等一整套分布式应用开发工具。

    特别值得一提的是 SOFAMesh其实对下一代微服务架构 Service Mesh 的大规模落哋方案实践,基于 Istio 改进和扩展而来应该是国内最为成熟的开源 Service Mesh 方案。

    此外需要提到 Kubernetes(K8s),其本身提供了部分的微服务特性支持(通过域名做服务发现)对代码无侵入。但服务调用、熔断这些都需要自己实现

    综上,目前公司技术团队技术栈是 Spring并且已有服务的实现都昰基于 Dubbo。

    因此选择 Spring Cloud Netflix 做为基础的微服务框架对其中不成熟或者缺乏的组件,选择业界更为成熟的组件替代即可:

    • 服务注册中心:Dubbo

    • 服务监控&全链路追踪:CAT。

    • 消息队列:Kafka


    觉得本文对你有帮助?请分享给更多人
    关注「全栈开发者社区」加星标提升全栈技能
    本公众号会不定期給大家发福利,包括送书、学习资源等敬请期待吧!
    如果感觉推送内容不错,不妨右下角点个在看转发朋友圈或收藏感谢支持。
    
}

我要回帖

更多关于 视频聊天双方都要扣流量吗 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信