用户您好!请先登录!

作者:乞力马扎罗的鱼

物联网架构简谈

物联网(IOT)由国际电信联盟(ITU)的定义为:通过二维码读取设备、射频识别装置(RFID)、红外线感应器、全球定位系统和激光扫描器等信息传感设备,按照既定协议,把任何物品与互联网连接,进行信息交换和通信,以实现智能化识别、定位、跟踪、监控和管理的一种网络。

物联网将传感器与智能处理相结合,运用云计算、模式识别等多种智能技术,拓展应用领域。从传感器获取的海量信息中,分析、处理得到有意义的信息,以满足不同用户的不同需求,找到新的应用领域和模式。

物联网的架构

物联网的本质很简单:传感+通信+IT技术

物联网架构超强解读

 

  • 终端:透彻的感知和测量,使生产资料能够有自己的思想,并与外界沟通交流
  • 网络:泛在的接入和互连、公共通信网络、物联网、互联网,以确保生产资料和工业应用的泛在的连接
  • 应用程序:深度智能分析与控制、行业智能应用与控制系统(计算、存储、应用)

阅读更多

IPD(集成产品开发)那点事

集成产品开发(Integrated Product Development, 简称IPD)是一套产品开发的模式、理念与方法。IPD的思想来源于美国PRTM公司出版的《产品及生命周期优化法》(简称PACE——Product And Cycle-time Excellence)一书,该书中详细描述了这种新的产品开发模式所包含的各个方面。

IPD的研发背景

最先将IPD付诸实践的是IBM公司,1992年IBM在激烈的市场竞争下,遭遇到了严重的财政困难,公司销售收入停止增长,利润急剧下降。经过分析,IBM发现他们在研发费用、研发损失费用和产品上市时间等几个方面远远落后于业界最佳。为了重新获得市场竞争优势,IBM提出了将产品上市时间压缩一半,在不影响产品开发结果的情况下,将研发费用减少一半的目标。

为了达到这个目标,IBM公司率先应用了集成产品开发(IPD)的方法,在综合了许多业界最佳实践要素的框架指导下,从流程重整和产品重整两个方面来达到缩短产品上市时间、提高产品利润、有效地进行产品开发、为顾客和股东提供更大价值的目标。

阅读更多

LVS:三种负载均衡方式比较

1、什么是LVS?

首先简单介绍一下LVS (Linux Virtual Server)到底是什么东西,其实它是一种集群(Cluster)技术,采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。

为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。一般来说,LVS集群采用三层结构,其体系结构如图所示:

LVS:三种负载均衡方式比较

LVS集群的体系结构

阅读更多

阿里开源限流熔断方案Sentinel介绍

既然Sentinel开源了,作为 承接了阿里巴巴近 10 年的双十一大促流量的平台,有必要了解一下阿里开源限流熔断方案Sentinel功能、原理、架构、快速入门以及相关框架的比较。

基本介绍

1 名词解释

  • 服务限流 :当系统资源不够,不足以应对大量请求,对系统按照预设的规则进行流量限制或功能限制
  • 服务熔断:当调用目标服务的请求和调用大量超时或失败,服务调用方为避免造成长时间的阻塞造成影响其他服务,后续对该服务接口的调用不再经过进行请求,直接执行本地的默认方法
  • 服务降级:为了保证核心业务在大量请求下能正常运行,根据实际业务情况及流量,对部分服务降低优先级,有策略的不处理或用简单的方式处理

服务降级的实现可以基于人工开关降级(秒杀、电商大促等)和自动检测(超时、失败次数、故障),熔断可以理解为一种服务故障降级处理

2 为什么需要限流降级

系统承载的访问量是有限的,如果不做流量控制,会导致系统资源占满,服务超时,从而所有用户无法使用,通过服务限流控制请求的量,服务降级省掉非核心业务对系统资源的占用,最大化利用系统资源,尽可能服务更多用户

阅读更多

IT测试工具集清单

现在大热的敏捷模式,DevOps以及许多现代日常的软件开发方法/概念都在支持测试在整个SDLC过程中的相关性。软件测试工具是催化剂,将决定市场带给测试的新时代挑战的速度.善于利用工具,能提高工作效率。但勿太依赖工具,任何的工具,只可辅助。

我们来看看通常意义上的测试工具的分类,常用的测试工具可以分为10类:

  • 测试管理工具
  • 接口测试工具
  • 性能测试工具
  • C/S自动化工具
  • 白盒测试工具
  • 代码扫描工具
  • 持续集成工具
  • 网络测试工具
  • app自动化工具
  • web安全测试工具

备注:工具排名没有任何意义。

阅读更多

HTTP和HTTPS那点事

一、HTTP和HTTPS发展历史

什么是HTTP?

超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。

发展历史:

版本产生时间内容发展现状

HTTP/0.91991年不涉及数据包传输,规定客户端和服务器之间通信格式,只能GET请求没有作为正式的标准

HTTP/1.01996年传输内容格式不限制,增加PUT、PATCH、HEAD、 OPTIONS、DELETE命令正式作为标准

HTTP/1.11997年持久连接(长连接)、节约带宽、HOST域、管道机制、分块传输编码2015年前使用最广泛

HTTP/22015年多路复用、服务器推送、头信息压缩、二进制协议等逐渐覆盖市场

阅读更多

Python开源项目推荐

Mybridge评估了5000个开源项目,从中选出30多个最佳项目,开发者和学生都可以用来作为项目实践或者项目开发参考。

接下来是完整列表:

1. Manim – Mathematical Animation Engine

对比了Github上5000份Python开源之后,大神精选了36个项目

简介:Manim是解释性数学视频的动画引擎。用于以编程方式创建精确的动画,如3Blue1Brown的视频中所展示的样例。

地址:https://github.com/3b1b/manim

阅读更多

学术网站推荐

1, sci-hub

搞科研,必须了解的学术网站

网址:http://www.sci-hub.io/

备用站点:http://www.sci-hub.cc/

中国版以及备用站点:http://www.sci-hub.cn/、http://www.sci-hub.xyz/

全能文献资源下载工具是一个有俄罗斯牛人开发的可以下载任意文献杂志的工具,只要输入你想要下载的文献题目、DOI等信息就可以获取到该文献的真实地址并在线浏览,当然更重要的是可以下载。

阅读更多

常用的Python Web程序的部署方式

通常来说, Web应用一般是三层结构:Web Server====》 Application=====》 DB Server

主流的 Web server 一个巴掌就能数出来,Apache,Lighttpd,Nginx,IIS等。 Application,中文名叫做应用服务,就是你基于某个web framework写的应用代码;DB server 泛指存储服务,web开发中用mysql比较多,最近几年因为网站规模扩大,memcache,redis这种key-value等存储也流行开来。

放在最前面的web server有3个功能:

  • 高效率处理静态文件,web server都是用c开发,调用是native的函数,对IO,文件传输都做针对性的优化
  • 充当一个简易的网络防火墙,可以denny一些ip,简单的控制并发连接数量等等,聊胜于无
  • 处理高并发短连接请求,把成千上万用户的request 通过内网的几十个长连接进行转发,原因一个是web server处理高并发很专业,另外一个原因是大部分的application所用的框架都不具备处理高并发的能力

实际上,市面上有部分web framework由于内置了支持epoll/kqueue 等高效网络库,而具备了处理高并发的能力,比如说 python的tornado,java系的tomcat,jetty等等,有人就去掉前端的web server,直接裸奔,但是在部署公网应用时候,最好别这样做,因为前面提到的1,2两个原因,用户brower到web server的网络状况是千奇百怪,你无法想象的。

阅读更多

Common Implementation of High Availability in Microservice Architecture

高可用并不是一套整体解决方案,而是由诸多环节组成,一环扣一环,最终串起来组成一个整个系统的高可用落地方案。

什么是高可用

在定义什么是高可用,可以先定义下什么是不可用,一个网站的内容最终呈现在用户面前需要经过若干个环节,而其中只要任何一个环节出现了故障,都可能导致网站页面不可访问,这个也就是网站不可用的情况。

参考维基百科,看看维基怎么定义高可用:

系统无中断地执行其功能的能力,代表系统的可用性程度,是进行系统设计时的准则之一。

这个难点或是重点在于“无中断”,要做到 7×24 小时无中断无异常的服务提供。

为什么需要高可用

一套对外提供服务的系统是需要硬件,软件相结合,但是我们的硬件总是会出故障,软件会有 Bug,硬件会慢慢老化,网络总是不稳定,软件会越来越复杂和庞大。

除了硬件软件在本质上无法做到“无中断”,外部环境也可能导致服务的中断,例如断电,地震,火灾,光纤被挖掘机挖断,这些影响的程度可能更大。

阅读更多

学习一下美团集群调度系统HULK的技术演进

本文根据美团基础架构部/弹性策略团队负责人涂扬在2019 QCon(全球软件开发大会)上的演讲内容整理而成。本文涉及到的Kubernetes集群管理技术,美团相关的技术实践可参考此前发布的相关文章。

HULK是美团的容器集群管理平台。在HULK之前,美团的在线服务大部分部署都是在VM上,在此期间,我们遇到了很大的挑战,主要包括以下两点:

  • 环境配置信息不一致:部分业务线下验证正常,但线上验证却不正常。
  • 业务扩容流程长:从申请机器、资源审核到服务部署,需要5分钟才能完成。

因为美团很多业务都具有明显的高低峰特性,大家一般会根据最高峰的流量情况来部署机器资源,然而在业务低峰期的时候,往往用不了那么多的资源。在这种背景下,我们希望打造一个容器集群管理平台来解决上述的痛点问题,于是HULK项目就应运而生了。

阅读更多

华为移动服务(HMS)那点事

HMS是什么?

华为移动服务是个什么东西呢?

它的英文名为Huawei Mobile Services,缩写为HMS。

HMS?这不禁让人想起GMS。也就是移动服务。

GMS可是Google开发并推动Android的动力,是Android系统的灵魂所在。

GMS目前提供有Search、Search by Voice、Gmail、Contact Sync、Calendar Sync、Talk、Maps、Street View、YouTube、Android Market(ICS上更改为Play store)服务。

阅读更多

GraphQL 的工具库

GraphQL 是 Facebook 内部从 2012 年开始开发的项目,于 2015 年公开发布。2018 年 11 月 7 日,GraphQL 的控制权被移交给由 Linux 基金会托管的 GraphQL 基金会。随后 GraphQL 日益普及,一个富有活力的生态系统也随之迅速成长。

GraphQL 本质上是“API 的查询语言,以及使用你为数据定义的类型系统执行查询的服务端运行时”。它不依赖任何数据库或存储,而是由你的代码和数据来支持。GraphQL 查询是发送到运行时的字符串,它向客户端返回 JSON。

这种简单有效的设计催生了一个充满活力生态系统,社区有大批关于它的内容、演讲和指南,当然还有一系列开源工具、客户端、编辑器和库,增强并完善实践中的 GraphQL 工作流程。

这里收集了一些最出色的 GraphQL 工具和库,内容涵盖客户端库、IDE 及好用的集成。

1. Apollo 服务器和客户端

APOLLO 平台是 GraphQL 的一个实现,帮助用户管理从云到 UI 的各类数据。它可以渐进引入,可以在包括 REST API 和数据库在内的现有服务上另起一层运行。

阅读更多

IPSec的基本原理

鉴于目前访问国外部分网站非常困难的事实,重温一下其中的基本原理还是很有必要的。IPSec VPN是目前VPN技术中点击率非常高的一种技术,同时提供VPN和信息加密两项技术,接下来就看一下IPSec VPN的原理。

IPSec VPN应用场景

IPSec VPN的应用场景分为3种:

  1. Site-to-Site(站点到站点或者网关到网关):如弯曲评论的3个机构分布在互联网的3个不同的地方,各使用一个商务领航网关相互建立VPN隧道,企业内网(若干PC)之间的数据通过这些网关建立的IPSec隧道实现安全互联。
  2. End-to-End(端到端或者PC到PC): 两个PC之间的通信由两个PC之间的IPSec会话保护,而不是网关。
  3. End-to-Site(端到站点或者PC到网关):两个PC之间的通信由网关和异地PC之间的IPSec进行保护。

VPN只是IPSec的一种应用方式,IPSec其实是IP Security的简称,它的目的是为IP提供高安全性特性,VPN则是在实现这种安全特性的方式下产生的解决方案。

阅读更多

GraphQL 可以取代Restful API么?

作者:Azat Mardan

几年前,我在 DocuSign 带领了一个开发团队,任务是重写一个有数千万个用户在使用的 Web 应用程序。当时还没有可以支持前端的 API,因为从一开始,Web 应用程序就是一个.NET 大单体。西雅图的 API 团队在将拆分单体,并逐步暴露出 RESTful API。这个 API 团队由两名工程师组成,发布周期为一个月,而我们在旧金山的前端团队每周都会发布新版本。

API 团队的发布周期太长,因为很多(几乎所有)功能都必须进行手动测试,这是可以理解的。它毕竟是一个单体,而且没有适当的自动化测试——如果他们修改了一个地方,不知道在应用程序的其他地方会出现什么问题。

我记得有一次,我们的前端团队面临为某大会交付新版本的压力,但我们忘记跟进一个重要的 API 变更,这个变更未被包含在即将发布的 API 版本中。我们要么一直等待,直到错过截止日期,要么有人愿意放弃优先权,以便让我们的变更包括在即将发布的版本中。所幸的是,这个变更最后被包含在新版本中,我们也及时发布了新的前端版本。我真的希望当时我们已经使用了 GraphQL,因为它可以消除对外部团队及其发布周期的重度依赖。

在这篇文章中,我将介绍 GraphQL 的优势,以及为什么它会变得如此受欢迎。

阅读更多

计算机系统的运维演进之路

数字化转型大潮中,常常说到DevOps,但是其并不是数字化转型所特有的。从一个高度及敏捷的研发团队的角度,其是必要的技术组成部分,甚至不在于是否用不用敏捷。并随着大数据的特有应用,衍生出DataOps;同时由于互联网相关应用等的大规模分布式的使用,及虚拟化、容器化等等的海量集群的应用,AIOps也被冠名了。

小运维与大运维

  • 统一及集中的部门和团队的成立,就是为了提供集中/一致/协同的管理支持,提高专业化水平。
  • 但是其不能永远站在后面,被动的接受服务请求。
  • 其专业性和资源集中性要渗透到立项,开发,运维等的全生命周期中,协同应用及系统建设和后续工作。
  • 不管是自己内部资源,还是外部资源,第三方服务及产品,团队应是组织与基础设施及平台服务的唯一对接中心。
航司的DevOps & DataOps & AIOps

阅读更多

搜索引擎基本原理

搜索引擎是什么?

这里有个概念需要提一下。信息检索 (Information Retrieval 简称 IR) 和 搜索 (Search) 是有区别的,信息检索是一门学科,研究信息的获取、表示、存储、组织和访问,而搜索只是信息检索的一个分支,其他的如问答系统、信息抽取、信息过滤也可以是信息检索。

本文要讲的搜索引擎,是通常意义上的全文搜索引擎、垂直搜索引擎的普遍原理,比如 Google、Baidu,天猫搜索商品、口碑搜索美食、飞猪搜索酒店等。

Lucene 是非常出名且高效的全文检索工具包,ES 和 Solr 底层都是使用的 Lucene,本文的大部分原理和算法都会以 Lucene 来举例介绍。

为什么需要搜索引擎?

看一个实际的例子:如何从一个亿级数据的商品表里,寻找名字含“秋裤”的 商品。

阅读更多


1 2 3