写点什么

Golang 和 HTTPS 在网站前端接入里的作用

  • 2016-01-03
  • 本文字数:2291 字

    阅读完需:约 8 分钟

网站前端架构技术一直在不断的优化,而要做到全栈优化,就必须要运维、后端架构研发、前端模板渲染研发、系统和网络等各个部门的协作。同时,安全又是网站建设话题中避不开的梗,从 2015 年年初开始,HTTPS 安全协议就已经遍布各大网站的网址里了,而百度是国内第一家推行全站 HTTPS 的大型网站,这其中就有很多关于站内优化和站内安全的经验分享。以下内容是对第61 期百度技术沙龙的三位资深运维工程师的采访。

陶春华:百度资深运维工程师,百度Golang 委员会成员 & Code Master,工作中主要方向在百度接入的Go 项目。

InfoQ:BFE 架构是如何做到在高并发访问的情况下不丢失访问请求的?

陶:BFE 架构能做到这一点主要依托了 Golang 对并发访问的支持:goroutine 机制在并发处理上非常高效;编程模型也是大家熟悉的线程模型,容易掌握。

InfoQ:后台统一日志收集使用的是什么技术?以及如何在不影响业务流程的情况下保证日志的准确性和实时性?

陶:对访问日志我们采用两个手段处理:一是开发了一个专用的 Reader 程序,解析出部分关键请求信息,通过实时接口发送到后台汇聚服务,用于实时的流量识别与调度。二是公司有日志收集系统,统一进行日志的收集、统计与存档。

InfoQ:BFE 前端接入是如何做到防攻击的?在不影响主业务流程情况下具体安全策略是如何运行的?

陶:安全主要是通过 WAF 服务来保障。WAF Server 是和 BFE 同机部署的应用层防火墙,BFE 会把流量转发到 WAF 服务程序。根据安全规则,WAF 服务对访问数据进行检查,一旦发现违反安全规则的访问,则立即封禁该访问。这个过程独立于 BFE 的其他处理逻辑。

InfoQ:BFE 前端目前有没有做到自动化接入产品线?如果有的话,请谈谈是如何做到这一点的?

陶:目前有部分是自动化接入产品线的,主要是出于为部分重要配置的审核考虑,才使用了自动化接入。

InfoQ:BFE 架构下流量控制策略是如何设计的?当初为什么使用这种设计方法?

陶:流量调度分为外网调度和内网调度两个层次。

外网调度,主要考虑如何控制 DNS 系统,将用户引导到合适的入口 IDC。内网调度,主要考虑在业务集群间的负载情况,将流量从一个 BFE 集群,分流到多个等价的业务集群,权重是根据负载情况实时计算得到的。

InfoQ:GO 语言在前端接入设计上存在哪些“先天不足”?主要的解决措施是什么?

陶:对 BFE 的应用场景来说,主要是 GC 带来的不确定的延迟。为此我们设计了多进程轮转的解决方案,基本思路是当前服务的工作进程关掉 GC,服务一段时间后,其他进程替换工作。

许霞:百度资深运维工程师。曾负责反作弊、超链分析、用户行为分析等离线计算系统维护工作。最近两年来专注于网页搜索无线访问速度与接入体验方向。

InfoQ:如何跟后端架构研发、前端模板和渲染研发、系统和网络等各个部门之间进行协作,才能实现整个网站全栈优化的效果?

许:网站速度的提升在公司内部是一个主题方向,并且有一个独立的项目组进行工作开展。项目组中包括网络、服务器、搜索架构等基础技术的工程师,也包括前端渲染、交互设计方向的工程师。整个项目组会整体对网站的优化进行负责,从而实现从各个层面进行速度的优化。而运维部作为一个衔接基础技术和业务的技术部门,就承担了整体分析设计与驱动全栈优化的角色。

InfoQ:百度在 WPO(Web Performance Optimization)上做了哪些措施?对各种监测手段的使用如何抉择?

许:网站性能的监测手段选择主要是两方面的。

首先是基于 JS 的监测数据,这部分数据优点是数据规模大,数据可以根据目的性进行自定义。当然缺点是很难覆盖竞品的情况下对竞品情况的了解,我们会选择第三方监测,包括基调、博瑞,以及海外的同行。通过购买第三方监测服务来覆盖我们在竞品测监测数据,同时也保证了客观性。

陈曦洋:百度资深运维工程师,近 3 年作为主要技术负责人,处理网页搜索的可达性,访问速度,安全搜索等方向事务。

InfoQ:可否介绍一下目前 HTTPS 在业界的适用范围?使用前后的效果对比是怎样的?

陈:需要保护隐私,防止劫持和嗅探,和钱 / 账户打交道的都应该优先上。在这些领域,对用户流量的劫持已经让用户难以忍受,甚至一些临时工写出来的劫持代码会直接让页面功能不可用,可以从用户反馈渠道看到大量的抱怨。另外一方面,一些非法的行为会直接嗅探用户浏览网页的的隐私,获得用户需求信息,甚至直接电话骚扰用户。不安全的浏览会给坏人可趁之机,入侵用户账户,造成财产或者名誉等损失。

百度在上线 HTTPS 之后,用户反馈的页面由于劫持而造成的功能问题减少了一个数量级。之前大家没有上线 HTTPS,很多是在顾忌复杂性,资源成本,和访问延迟。这些问题都会逐渐得到解决,建议大家尽量都改造为 HTTPS。另外看看今年上线 HTTPS 有哪些网站就知道效果如何了。

InfoQ:HTTPS 目前在百度的使用场景有哪些?能不能做到完完全全的安全?

陈:HTTPS 目前在百度主要在搜索支付金融账户等业务,也正在推进支持所有的产品。使用 HTTPS 代表不了完完全全的安全,但是能解决很多问题,也极大的增加了攻击者的成本。但没有“完全的安全”这个说法。一个实际使用中的完整系统总是非常的复杂,用户浏览网页的过程也是一样,在很多环节上,都有各种各样的风险。

网上有清华大学段海新教授对网银及其他使用 HTTPS 网站的攻击演示。光是百度部署 HTTPS,也没有办法完整的保护浏览的整个环节,因为你最终还是要通过百度访问到你感兴趣的网站上去的。而我们发现有些网站为了获取用户的信息,会购买一些非法的服务,可以拿到你的大量信息,甚至电话号码。

而在第 61 期百度技术沙龙现场活动中,陈曦洋还会跟大家分享百度在使用 HTTPS 安全协议之初,都曾遇到过哪些问题,使用了什么样的解决方案等精彩内容!

2016-01-03 18:564046
用户头像

发布了 181 篇内容, 共 102.5 次阅读, 收获喜欢 208 次。

关注

评论

发布
暂无评论
发现更多内容

架构训练营模块 5 作业 - 江哲

江哲

El Camino de Santiago

escray

6月日更

JavaScript 代码逻辑判断的优化

编程三昧

JavaScript 大前端 代码质量 代码优化 编程思想

Git使用

xujiangniao

Sprint Review != Demo——《Scrum指南》重读有感(4)

Bruce Talk

Scrum 敏捷 随笔 Agile

【译】编写整洁 React 代码的简单实践

KooFE

大前端 React 6月日更 整洁代码

MySQL基础之五:其他过滤方式

打工人!

myslq 6月日更

工厂里三个质检车间缩减为一个,飞桨企业版EasyDL助力降本增效

百度大脑

飞桨

区块链+数字政务:成都高新区如何创新

CECBC

这个 “少年黑客”,用黑科技守护独居老人

阿里云CloudImagine

阿里云 计算机视觉 音视频 养老

相似度计算-句子

Qien Z.

nlp 6月日更 tf-idf

整数划分问题(详解 n > m 情况)

若尘

数据结构 6月日更

5分钟速读之Rust权威指南(十八)

wzx

rust 范型 trait

Java程序员【面试】与【进阶】3个最佳学习方法

Java架构师迁哥

APISIX2.6微服务网关入门

菠萝吹雪—Code

架构实战营

Python——注释和字符串的拼接

在即

6月日更

Redis 缓存的三大问题及其解决方案

xcbeyond

redis 缓存 6月日更

理解IM消息“可靠性”和“一致性”问题,以及解决方案探讨

JackJiang

即时通讯 IM 可靠消息最终一致

如何使用Tauri和Ember.js创建小型、快速和酷的桌面应用程序

代码先生

tauri ember.js desktop程序

Kubernetes手记(4)- 命令入门

雪雷

6月日更

戴着镣铐起舞的算法市场

脑极体

我的程序员生涯(2)

胡途

程序员 职业生涯

应用,才是区块链的终极归宿

CECBC

Bzz节点分币系统搭建,Bzz矿机挖矿系统

Bzz节点挖矿系统搭建,Bzz分币系统源码

我的程序员生涯(1)

胡途

程序员 职业生涯

网络攻防学习笔记 Day38

穿过生命散发芬芳

网络攻防 6月日更

平衡计分卡- 战略落地的工具

石云升

创业 战略 职场经验 6月日更

自制文件系统 —— 02 开发者的福音,FUSE文件系统

奇伢云存储

Linux 文件系统 FUSE

区块链能否为应对气候变化 提供解决方案?

CECBC

Atlassian 最受欢迎的分析工具强势融入 Confluence Data Center!

Atlassian

DevOps 知识管理 Atlassian Jira Confluence

Golang和HTTPS在网站前端接入里的作用_语言 & 开发_Xue Liang_InfoQ精选文章