写点什么

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:563823
用户头像

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

关注

评论

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

中国CRM突围指南

ToB行业头条

CRM

同步与异步,回调与协程

Linux服务器开发

线程 后端 协程 底层应用开发 Linux服务器开发

为什么从蚂蚁离职?base拉胯,高潜也被倒挂,就是酸,忍不了

Java架构师迁哥

精彩回顾 | 一张图读懂OPPO应用与数据安全防护

OPPO安全

OPPO安全

《迅雷链精品课》第九课:区块链P2P网络

迅雷链

区块链

Serverless 应用引擎的远程调试和云端联调

阿里巴巴云原生

Java Serverless 云原生 后端

AWS IoT Greengrass设计解析

soolaugust

边缘计算 工业4.0 工业物联网 iiot

跟随杠精的视角一起来了解Redis的主从复制

leonsh

redis redis高可用 redis主从

PGAS模型编程语言

星际行者

设备常用网管配置举例

大企软件系统问题多?归乡名企工程师:解决很简单,分分钟做个新系统

Learun

敏捷开发 快速开发 企业开发 CRM 企业应用

在K8S/OpenShift上开发应用程序的14种最佳实践

东风微鸣

Kubernetes 最佳实践 k8s最佳实践 openshift

OPPO技术开放日第六期丨OPPO安全解析“应用与数据安全防护”背后的技术

OPPO安全

OPPO安全

智能视频监控的发展和优势

anyRTC开发者

安全 监控 音视频 WebRTC RTC

想了解表格问答,我们先看看TA的前世

华为云开发者联盟

数据库 规范 表格

区块链技术应用打造智慧物流

13828808769

区块链技术应用开发

你敢信?就是这个Netty的网络框架差点把我整疯了,哭jj

小Q

学习 编程 面试 Netty 网络

测试过程中如何快速定位一个bug

测试人生路

软件测试

精心总结C++智能指针用法详解(完整版)附带视频讲解

ShenDu_Linux

c++ 程序员 指针 智能指针

架构师 3 期 3 班 -week2- 作业

zbest

作业 week2

cncf serverless 所有项目全解读

coldTea214

云计算 Serverless 容器 cncf

深入了解进程间通信:System V信号量+共享内存

ShenDu_Linux

Linux 进程 内存管理 通信协议

go-zero 之 rest 实战与原理

万俊峰Kevin

RESTful api 网关 microservice Go 语言

架构师 3 期 3 班 -week2- 总结

zbest

总结 week2

技术应用丨DWS 空间释放(vacuum full) 最佳实践

华为云开发者联盟

内存 存储 磁盘

LeetCode题解:455. 分发饼干,贪心while循环,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

「云原生上云」后的聚石塔是如何应对 双11 下大规模应用挑战的

阿里巴巴云原生

阿里云 云原生

关于物联网规则引擎技术,你想要知道的都在这儿!

华为云开发者联盟

数据 联动 iotda

从零做网站开发:基于Flask和JQuery,实现表格管理平台

华为云开发者联盟

jquery flask 框架

美团T8级架构师剖析Spring Boot源码:日志、缓存、消息、Web服务等

Java架构追梦

Java 源码 架构 微服务 springboot

linux后台开发必知的linux系统内存知识总结

linux大本营

c++ Linux 后台开发 架构师 内存管理

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