【领取见面礼】限量 100份 GeekOnline加油包!等你来拿

技术活动雨山 回复了问题 • 62 人关注 • 62 个回复 • 2599 次浏览 • 2020-09-08 17:35 • 来自相关话题

SpringCloud之Ribbon使用篇

IM即时通讯梅川酷子 发表了文章 • 3 个评论 • 165 次浏览 • 2020-06-29 14:20 • 来自相关话题

1、环境准备我们继续使用《SpringCloud之Eureka使用篇》里面Eureka集群环境。1.首先我这里有spring-cloud-parent pom工程2.spring-cloud-eureka-server Eureka Server 子工程 这里... ...查看全部

1、环境准备

我们继续使用《SpringCloud之Eureka使用篇》里面Eureka集群环境。

1.首先我这里有spring-cloud-parent pom工程

2.spring-cloud-eureka-server Eureka Server 子工程 这里端口我们使用90开头,我们这里集群由两个服务实例组成,分别是9090与9091端口。

3.spring-cloud-user-service-consumer 用户服务 (也就是咱们的服务消费者)这里端口我们使用80 开头

4.spring-cloud-order-service-provider 订单提供服务 (服务提供者) 这里端口我们使用70开头,我们订单服务提供着也由两个实例组成,分别是7070与7071。

2. spring-cloud-eureka-server
我们spring-cloud-parent 父工程 与Eureka Server 服务spring-cloud-eureka-server不需要动,然后分别启动9090端口与9091端口的Eureka Server。



3.订单服务(服务提供者)
3.1 application.yml

我们这里使用springboot profiles 配置文件特性将订单提供者服务spring-cloud-order-service-provider分成不同端口

spring:
  application:
    name: spring-cloud-order-service-provider

---
spring:
  profiles: p1
eureka:
  client:
    service-url:
      defaultZone: http://EurekaServerA:9090/eureka,http://EurekaServerB:9091/eureka
    fetch-registry: true
    register-with-eureka: true
  instance:
    prefer-ip-address: true   # 使用ip注册
    #自定义实例显示格式,添加版本号
    instance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}:@project.version@
server:
  port: 7070

---
spring:
  profiles: p2
eureka:
  client:
    service-url:
      defaultZone: http://EurekaServerA:9090/eureka,http://EurekaServerB:9091/eureka
    fetch-registry: true
    register-with-eureka: true
  instance:
    prefer-ip-address: true   # 使用ip注册
    #自定义实例显示格式,添加版本号
    instance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}:@project.version@
server:
  port: 7071

并配置idea启动



3.2 controller

修改controller,让其返回当前服务的端口,利于我们观 

<code class="C/C++">@RestController
@RequestMapping(<span style="color: rgb(249, 150, 59);">"/order/data")
public class OrderStatisticServiceController {
    @Value("${server.port}")
    private Integer port;
    /**
     * 根据用户id获取今日完单数
     * @param id 用户ID
     * @return  完单数
     */
    @GetMapping("/getTodayFinishOrderNum/{id}")
    public Integer getTodayFinishOrderNum(@PathVariable("id") Integer id){
        return port;
    }
}

3.3 启动

分别启动订单服务提供者 7070 与7071 服务,我们可以看到两个服务提供者注册到Eureka Server 上面了。



4.用户服务(服务调用者)

订单调用者服务: spring-cloud-user-service-consumer:8080

4.1 RestTemplateConfiguration

我们需要在RestTemplate配置类里面在注入RestTemplate的方法上面添加注解@LoadBalanced

@Configuration
public class RestTemplateConfiguration {
    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        return  new RestTemplate();
    }
}

这就ok了,我们这里不需要添加Ribbon的依赖,因为Eureka Client包里面帮我们引入Ribbon相关的依赖。

4.2 controller

这里我们只需要在调用url中写入要调用的服务名字就可以了,然后Ribbon就会帮我们从服务列表找到合适的服务调用的

@RestController
@RequestMapping("/user/data")
public class UserCenterController {
    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("/getTodayStatistic/{id}")
    public Integer getTodayStatistic(@PathVariable("id") Integer id){
        String url  ="http://spring-cloud-order-service-provider/order/data/getTodayFinishOrderNum/"+id;
        return restTemplate.getForObject(url, Integer.class);
    }

}

4.3 启动测试


我们调用两次,分别返回7071与7070,说明我们Ribbon起作用了。



4.4 调整负载均衡策略

我们这边默认的负载均衡策略是:ZoneAvoidanceRule:区域权衡策略。然后我们可以通过配置来使用其他的负载均衡策略,比如我们使用随机策略:
application.yml中配置这个是针对spring-cloud-order-service-provider 这个服务的。
 

spring-cloud-order-service-provider:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

 

更多配置可以参考:
我是个链接
&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;
版权声明:本文为CSDN博主「$码出未来」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yuanshangshenghuo/article/details/106975354

抢占互联网通信云市场 融云有何过人之处?

科技创新融云那些事 发表了文章 • 0 个评论 • 216 次浏览 • 2020-06-16 20:00 • 来自相关话题

随着移动互联网的发展,曾经低调的中国云通信领域步入快速发展阶段,整个市场变得越来越火热,目前来看,国内云通信行业市场规模至少百亿级,高速扩张的市场规模让更多的厂商看到了机会,纷纷入局分羹。除了融云等早前就布局的专业通信云厂商之外,从 2017 年开始,以阿里、... ...查看全部

随着移动互联网的发展,曾经低调的中国云通信领域步入快速发展阶段,整个市场变得越来越火热,目前来看,国内云通信行业市场规模至少百亿级,高速扩张的市场规模让更多的厂商看到了机会,纷纷入局分羹。

除了融云等早前就布局的专业通信云厂商之外,从 2017 年开始,以阿里、腾讯为代表的各大互联网巨头,也都开始调整组织架构,在 To B 端业务纷纷布局。这给原本就火药味儿十足的赛道又添了浓重的一笔。

经过激烈的混战之后,当下,整个云通信的市场格局已非常明了。据第三方报告显示,在国内的公有云通信 PaaS 市场,无论是业务量还是用户量,融云均遥遥领先,截至目前,融云 SDK 触达用户数达 40 亿,并且还在不断增加。

如此亮眼的成绩让业界对于融云有了更多的关注,当大家都在期待这家公司会在产品方面有何新动作时,融云出人意料的推出了五大服务体系,从服务着手,全方位多维度的提升用户体验。

此次不按套路的打法引发了大家的好奇心,融云究竟凭借什么成为互联网通信云行业的领头羊?重磅推出云服务又是出于怎样的考虑?带着种种疑问,飞象网记者采访了融云COO 董晗,揭秘融云背后的成功之道和业务布局。


融云COO 董晗接受飞象网专访
凭技术实力突出重围

众所周知,在移动互联网的影响下,用户的沟通方式从话音、短信开始转向基于互联网形式的即时通讯、实时音视频等交互方式,为了满足市场的诉求,国内同一时期出现了一大批 IM 即时通讯云服务商,融云就是其中一家。

和其他厂商不同,融云在成立之初就给自身设立了非常明确的定位,以互联网客户为主,为其提供互联网通信技术服务。在董晗看来,互联网通信云肯定是未来的发展趋势,基于此融云在做 IM 架构时,核心是本着互联网的移动端做正向开发。

从跟董晗的交流中,我们发现,真正使融云能够在国内众多的通信云厂商中迅速突起,主要还是得益于优秀的团队基因以及超强的技术实力。

董晗提到:“我们的核心技术骨干主要来自飞信和三星中国研究院,这让融云在 IM 领域拥有天然的核心技术实力,可以将高质量的即时通讯能力封装成 SDK 提供给广大的开发者和企业,帮助客户快速实现单群聊、聊天室等功能,获取语音、文字、视频、图片等沟通能力。”

不仅如此,在长期不断的技术积累和打磨下,融云的产品在安全性和可靠性方面都表现得非常优异。“融云是业内唯一承诺消息可靠性 100% 的厂商,率先承诺在海量用户并发的情况下消息不丢、不重、不乱序,亿级并发也可以即时到达。”董晗非常自信的对记者讲到。

此后,为了满足音视频服务的市场需求,融云在 2018 年对实时音视频领域进行了全面布局,基于之前的经验,融云在做音视频时跟 IM 一样,都是优先奠定技术层面的优势。目前融云在实时音视频的各项技术指标保持着市场领先水平,如音频可对抗 50% 丢包、视频可对抗 30% 丢包、音视频延时最低可达 66ms 等等。

突出的市场表现使得融云这家公司的通信云技术能力在业界口碑相传,成为了该领域的头号玩家。截至目前,融云已为超过 30 万款 App 提供了通信云服务,日均消息量达 150 亿条,日活已达 7000 万,日消息峰值超 2218 亿条,SDK 触达用户量突破 40 亿,也就是说,平均在每位中国网民的智能手机中至少有 5 款 App 通过融云 SDK 来实现沟通能力。

押码云服务

服务的客户越多越容易发现行业的一些痛点,对此,董晗深有体会。她对记者坦言,曾经融云只是单纯为客户提供 PaaS 底层能力,客户在集成 SDK 时会出现各种各样的问题,为了更好的帮助客户,融云把大量的调动逻辑写在文档里以及录视频等方式放到官网上,这些方式解决了大多数常见的客户问题,但对于一些高并发以及差异化场景的特殊需求,往往需要客户根据实际环境进行集成,如果经验不足的话,很可能会出现错误使用,导致产品不能上线。

“为了缩短客户的研发周期,帮助客户节省成本,融云决定推出服务包,服务包的内容各有侧重,用户可以根据自身产品的开发需求及使用场景,按需选择、自由组合。”董晗表示。


融云五大服务体系
此外,董晗指出:之前,大量的 PaaS 厂商把 PaaS 当作 SaaS 来卖,这种思路并不完全正确。融云认为 PaaS 的服务应更趋向于 IaaS 层的服务支持,在产品全生命周期中需要与客户的研发人员有大量的交互性、主动性的服务;而产品层应更趋向于 SaaS 的交付,能够替客户解决自研的大量工作,使客户调用起来更方便,大大缩短客户的研发周期。

目前,融云是通信云领域第一家专门针对客户服务痛点推出云服务包的企业。除了持续打磨核心技术优势,此次融云押码云服务也获得业界普遍认可,这可以称得上是“里程碑”式的举动,对于整个互联网云通信行业有着划时代的意义:此举不仅理顺了 PaaS 产品和服务的关系,也解决了用户对 PaaS 服务的实际刚需,未来,服务包也许会成为通信云厂商的服务标配。不得不说,融云是真的懂行业、懂客户。

服务向上 盈利向下

尽管云服务包的好处非常明显,但对于客户而言,增加了云服务之后会不会增加成本负担是客户特别关注的点。对此,董晗也明确回答:“融云在推出云服务的出发点上就没有直接与商业利益挂钩,我们不期待云服务能给我们贡献利润,对此客户不需要有过多的担忧。”

她进一步讲道:“我们在制定服务包的时候就有一个准则,如果某些服务是大量客户都会用到的标准服务,那一定是完全免费的。服务包功能更多是针对一些特殊的调用及使用场景,费用也只是研发人员的硬成本。”

可见融云押码云服务并非冲着钱来,而是有着更高阶的视角。从融云企业本身而言,其自身将完成从云产品迭代至云服务的重要升级,满足了对于客户的服务需求。从行业角度而言,云服务包的推出强化了整个 PaaS 厂商跟客户自身研发人员之间的联系。

虽然融云的服务包推出仅有三个月的时间,但截至目前已经有包括斗米、百姓网、火聊、悠趣直播等数十家客户购买了不同类型的云服务,并且从客户反馈来看,满意度非常高。

因此,董晗对于云服务的发展前景非常看好,在她看来,让客户用的舒服是企业重要的核心竞争力,云服务是整个 PaaS 领域里的一个未来走向。同时,董晗强调,千万不能把云服务做成口号,如果企业在推出一些服务体系时,无法调用一线的技术资源来辅助服务体系的构建,那对于客户使用产品是完全没有帮助的。

小结:

走在被踩烂了的成功之路上,只能是个跟随者,想要做引领者就要走别人没走过的路。作为互联网通信云领域的头部企业,融云更加明白这个道理,一直以来,融云基于对通信云领域的深刻理解以及客户的本质需求,不断衍生出了很多真正解决用户痛点的产品和方案。

当下,在其他通信云服务商都还在通过产品基础支撑拓宽市场的时候,融云已经开始强调服务品牌化,通过技术实力+品牌服务满足客户需求。相信在不远的将来,融云云服务势必将引发“鲶鱼效应”,进一步推动互联网通信云行业的变革和发展,引领整个 PaaS 行业服务能力的全面升级,构建 PaaS 服务新生态。

LiveVideoStackCon 深圳站:融云解析 WebRTC 低延迟直播技术

WebRTC融云那些事 发表了文章 • 0 个评论 • 251 次浏览 • 2020-06-16 18:36 • 来自相关话题

“基于 WebRTC 的低延迟直播将会是未来直播行业的主流解决方案!”这是融云联合创始人兼CTO 杨攀在 8 月 LiveVideoStackCon 2019 音视频技术大会北京站上对于未来行业趋势的判断。仅仅 4 个月之后,当大会首次落户有“中国硅谷”之称的... ...查看全部

“基于 WebRTC 的低延迟直播将会是未来直播行业的主流解决方案!”这是融云联合创始人兼CTO 杨攀在 8 月 LiveVideoStackCon 2019 音视频技术大会北京站上对于未来行业趋势的判断。仅仅 4 个月之后,当大会首次落户有“中国硅谷”之称的深圳时,融云的另一位技术专家,首席架构师李淼就“基于 WebRTC 的低延迟直播方案”进行了深入的技术分享。

12 月 13-14 日,LiveVideoStackCon 音视频技术大会在深圳举办,大会聚焦音视频、图像、AI 等技术的最新探索与应用实践,覆盖社交、游戏、直播、智能设备等行业领域,面向开发者分享技术创新与最佳实践。本次大会,聚集了数十名海内外技术专家和上千名开发者围绕前沿技术发展进行探讨。


融云首席架构师李淼
随着我国 5G 正式走向商用,直播行业在获得更多发展机遇的同时,也对直播技术提出了新的挑战。传统直播解决方案如果无法解决技术层面导致的延时问题,那么这一弊病将在 5G 的高速网络环境下被无限放大,这也进一步促使了低延迟音视频直播技术方案的演化。对此,李淼结合 WebRTC 的低延迟特性,在现场展示了融云 WebRTC 直播场景的构建全过程及服务架构设计,并向开发者们分享了技术实践细节,希望通过新技术的应用来解决视频直播的延时问题。

为什么要选用 WebRTC 来做直播?李淼表示,相较于传统的直播解决方案,WebRTC 拥有着不可比拟的三大优势。首先是低延时,让直播用户可以享受低延时的观看体验。目前直播行业中绝大多数产品是基于 RTMP、HLS、HDL 方式构建的,即使在不考虑网络链路的情况下,也会产生秒级的延迟,而 WebRTC 则天生具备低延迟的优势,使用 WebRTC 直播可有效将延迟降低至 200ms 以下。

其次是流量消耗小。基于 UDP 传输的 WebRTC 相比基于 TCP 传输的 RTMP 等协议,由于 UDP 协议内容较 TCP 小,且数据包是基于 NACK 进行传输等特点,对于流量的使用也有明显的降低。对于开发者和直播企业而言,流量消耗大幅削减,成本也因此可以得到有效的控制。

而最重要的优势在于 WebRTC 技术方案可以使主播端与观众端保持一致。当主播端使用  WebRTC 进行推流时,主播端与观众端保持一致,可以减少开发的编码量,对于团队人员的占用和后期对于代码的维护,都能保证最低的资源消耗。

在 LiveVideoStackCon 现场,李淼向开发者讲解了如何通过 WebRTC 完成直播场景构建的全过程,并对于 WebRTC 直播的技术细节一一进行了详细解读。李淼表示,使用 WebRTC 直播方案,MCU 服务器的设计至关重要。一方面 MCU 可以按需进行编解码,另一方面需要以房间号进行聚合,记录每台MCU的状态并按最小资源分配新房间,通过这种设计来减少 WebRTC 直播方案的资源消耗。


WebRTC 直播发布订阅流程
当然,对于很多开发者而言,实际的生产环境中仍面临着如何做到秒开视频、降低 MCU 带宽压力以及避免流量风暴等难题,李淼从 GOP 缓存结构和 GOP 控制策略两个层面进行了分析。以解决首帧卡顿延迟为例,直播数据在客户端与 Media Sever 进行交互之后,通常会对 SPS 和 I 帧进行正常下发,但是在随后的 P 帧或 B 帧的下发阶段,融云会采用 1.2 倍速下发的方式进行,直至所有数据包与 MCU 端推包进程同步,这就将直播延迟降至了最低。

此外,李淼还指出,客户端的设计必须考虑就近接入,且支持多链路选择,数据中心间同源音视频只有一路级联;同时还可以利用 IaaS 层的能力,进行中心间级联链路的优化。遵循这些直播网络设计原则都可以有效地降低直播延迟。

在分享的最后,李淼表示在 5G 时代,直播、短视频等内容传播形态将迎来新一轮技术升级,用户体验将成为行业洗牌的关键,此次将 WebRTC 低延迟直播的设计理念和技术要点与开发者和行业人士们一同分享,希望能够给业界带来一些启发和思考。作为互联网通信云行业的技术领导者,融云也将持续优化实时音视频技术和场景化解决方案,助力音视频直播行业在 5G 时代的创新发展。

WICC 2019:融云首次解密全球通信网底层基础架构

科技创新融云那些事 发表了文章 • 0 个评论 • 261 次浏览 • 2020-06-16 18:34 • 来自相关话题

日前,2019 全球互联网通信云大会(WICC)在上海圆满落幕。作为大会主办方的融云,面对场内外数万开发者,首次对其自建的全球通信网(SD-CAN)的架构进行解密,分享了架构设计背后的故事和演进历程。在连续多年稳居国内即时通讯领域市场占有率第一之时,融云已然将... ...查看全部

日前,2019 全球互联网通信云大会(WICC)在上海圆满落幕。作为大会主办方的融云,面对场内外数万开发者,首次对其自建的全球通信网(SD-CAN)的架构进行解密,分享了架构设计背后的故事和演进历程。

在连续多年稳居国内即时通讯领域市场占有率第一之时,融云已然将目光放在了更广阔的全球市场之上。自 2016 年起,融云跟随中国出海企业进行海外布局,为他们提供安全、可靠的全球通信云服务能力。时至今日,在全球化布局上,融云拥有 3 个数据中心,3000 多个动态加速节点,并自研最优链路调度算法,可以有效解决跨国、跨运营商、大规模用户访问导致的响应慢、丢包高、服务不稳定等诸多痛点。


融云首席架构师李淼演讲
突破代码所无法解决的难题,跨过技术调研与选型瓶颈

融云首席架构师李淼认为:“代码可以解决的问题都不是问题,代码解决不了的问题才是最难的问题”。在李淼眼中,什么是代码解决不了的难题?那就是搭建全球互联的通信云底层基础架构。

早期,融云通过提供 SDK,让开发者更易集成融云的通信云能力到自己的 App 应用中,这是融云将通信云技术普惠给广大开发者的初衷。融云凭借安全、可靠的互联网通信云技术能力,服务的中国企业越来越多,并且随着中国出海企业逐渐布局到了海外市场,为了进一步助力中国企业出海,融云自建全球通信网络的想法应运而生。

融云讲了一个真实案例,曾经有落地韩国的旅游 App 客户向融云反映,自己的用户在韩国、泰国等地常常因连接不畅,导致体验不佳。后来融云在韩国、泰国部署了加速节点,对当地的链路进行加速,解决了这个问题,但由于终端客户分布的随机性很大,当用户漫游到除韩国、泰国以外的海外地区,甚至到北欧等地时,仍然面临连接问题。

解决客户的问题就是融云研发团队的使命,融云全球通信网的构建已经变得刻不容缓。可以说,是客户的海外布局需求让融云打开了建设全球通信网络的大门。

融云全球通信加速网络演变历程

融云对全球通信网络的平台能力定义是:用户能够就近接入、覆盖区域广泛、通信质量稳定、支持动态路径切换。2016 年,融云全球通信加速网络 v1 版本正式上线运行,基本满足了出海客户对于全球通信的需求,并显示出性能优越、资源消耗低、结构简单、运维方便等优势。同时,融云持续在寻找对应区域的服务商上,加大技术和人力的成本投入,进行资源配置的优化和整合。通过对两年的运营数据比对:在没有加速网络的情况下,融云对海外用户整体的连通率大概只有 78% 左右,通过加速网络,融云在全球的用户整体连通率可以达到 99.5% 以上,全球互联互通的成效初显。

但是,v1 版本的全球通信网络同时也面临着多中心重复建设、链路选择不智能、功能相对单一等问题。因此,2018 年融云决定放弃 v1 版本中的架构设计,重新搭建通信云全球互联的底层基础架构,进行 v2 版本迭代。

由于融云全球通信加速网络 v2 版本采用自研的边缘节点,承载了更多的业务数据的处理能力,显示出四大优势:第一,支持多中心接入。在设计时增加了新的路由节点,在整个网络里,可通过边缘节点向路由节点汇聚数据流量,数据可向任意一个数据中心导入;第二,多协议支持。自研的边缘节点,使 v2 版本不仅能支持 HTTP、HTTPS,还能支持 WebSocket、WebSocketS 以及实时音视频 RTC 的信令等更多协议;第三,管控方便。v2 版本可以精确地控制每个客户的流量转向和流量调度;第四,灵活调度。相比于 v1 版本只能通过下发配置的方式进行调度,在 v2 版本可通过管控节点的方式对流量周转进行控制。

优化之路境无止境

5G 正式商用后,融云 SD-CAN 全球通信网络除了承载人与人之间的通信,还将更多地承载人与物、物与物的通信。针对互联网通信请求高并发、小数据包的传输特点,为全球客户提供优质的网络加速服务,这是融云未来所要面临的挑战。

面对挑战,融云希望全球通信网络在边缘计算和去中心化的实时数据交换方面有所突破。首先,在边缘计算方面,由于融云目前很多协议、逻辑、控制都是通过类似模块的方式写成,如果要更新这些,需要重新部署服务来解决。尽管现在可以做到使用户无感、无损地更新迭代,但要降低运营成本,融云要在边缘节点上增加类似 FaaS(Function as a Service)的能力,并通过一些动态语言在边缘结点上实现脚本化的运维操作,通过管控节点下发这些计算能力。

其次,在去中心化的实时数据交换方面。虽然 RTC 本身就是去中心化的实时交换,但是现在的交换数据一般都是音视频,融云后续会建立双端 TCP 连接,通过去中心化的网络,实现两个用户之间的文件传递和数据交互。

结语

融云历经三年的潜心研发,最终构建起安全、可靠的全球互联网通信云网络。在全球通信网络的架构演进之路上,融云始终如一,抱定为客户带来至佳体验的宗旨,在专业化的道路上不懈探索。随着 5G 通信和物联网技术的全面覆盖,融云势必将通过 SD-CAN 全球通信网络为出海开发者和企业提供更为强劲的服务能力。

友情链接