场景应用

用Nginx+Lua(OpenResty)开发高性能Web应用

主宰稳场 提交于 2019-12-30 08:40:01
在互联网公司,Nginx可以说是标配组件,但是主要场景还是负载均衡、反向代理、代理缓存、限流等场景;而把Nginx作为一个Web容器使用的还不是那么广泛。Nginx的高性能是大家公认的,而Nginx开发主要是以C/C++模块的形式进行,整体学习和开发成本偏高;如果有一种简单的语言来实现Web应用的开发,那么Nginx绝对是把好的瑞士军刀;目前Nginx团队也开始意识到这个问题,开发了nginxScript:可以在Nginx中使用JavaScript进行动态配置一些变量和动态脚本执行;而目前市面上用的非常成熟的扩展是由章亦春将Lua和Nginx粘合的ngx_lua模块,并且将Nginx核心、LuaJIT、ngx_lua模块、许多有用的Lua库和常用的第三方Nginx模块组合在一起成为OpenResty,这样开发人员就可以安装OpenResty,使用Lua编写脚本,然后部署到Nginx Web容器中运行。从而非常轻松就能开发出高性能的Web服务。 接下来我们就认识下Nginx、Lua、ngx_lua模块和ngx_lua到底能开发哪些类型的web应用。 一、ngx_lua简介 1 、Nginx 优点 Nginx设计为一个主进程多个工作进程的工作模式,每个进程是单线程来处理多个连接,而且每个工作进程采用了非阻塞I/O来处理多个连接,从而减少了线程上下文切换,从而实现了公认的高性能、高并发

NoSQL概述

耗尽温柔 提交于 2019-12-30 01:38:19
NoSql数据库四大分类 键值存储 列存储 文档数据库 图形数据库 NoSQL的特点 易扩展 灵活的数据模型 大数据量,高性能 高可用 Redis 读10w/s 写8w/s Redis的应用场景 缓存 任务队列 网站访问统计 应用排行榜 数据过期处理 分布式集群架构中的session分离 来源: https://www.cnblogs.com/Roni-i/p/10802222.html

Advances and Open Problems in Federated Learning 总结翻译

喜夏-厌秋 提交于 2019-12-28 05:24:58
摘要 联邦学习(FL)是一种机器学习设置,在这种设置中,许多客户(例如移动设备或整个组织)在中央服务 器(例如服务提供商)的协调下协作地训练模型,同时保持训练数据分散。FL体现了集中数据收集和最 小化的原则,可以减轻由于传统的、集中的机器学习和数据科学方法所带来的许多系统隐私风险和成 本。在FL研究爆炸性增长的推动下,本文讨论了近年来的进展,并提出了大量的开放问题和挑战。 MENU 1.引言 跨设备联邦学习设置 联邦学习中模型的生命周期 典型的联邦训练过程 联邦学习研究 组织 2. 放宽核心FL假设: 应用到新兴的设置和场景 完全的去中心化/端对端分布式学习 算法挑战 实际挑战 跨竖井联合学习 3. 提高效率和效果 联邦学习中的非IID 数据 对于处理非IID数据的策略 4 .保护用户隐私 5. 对攻击和失败的健壮性 6. 确保公平,消除偏见 7. 结论 1.引言 联邦学习(FL)是一种机器学习设置,在这种设置中,许多客户端(例如移动设备或整个组织)在中 央服务器(例如服务提供商)的协调下协作地训练模型,同时保持训练数据分散。它体现了集中收集和 最小化数据的原则,并且可以减轻传统的集中式机器学习带来的许多系统隐私风险和成本。 这一领域 最近从研究和应用的角度都引起了极大的兴趣。 本文描述了联邦学习设置的定义特征和挑战,强调了 重要的实践约束和注意事项

(深度好文)重构CMDB,避免运维之耻

大兔子大兔子 提交于 2019-12-27 17:38:43
(深度好文)重构CMDB,避免运维之耻 CMDB,几乎是每个运维人都绕不过去的字眼,但又是很多运维人的痛,因为CMDB很少有成功的,因此我也把它称之为运维人的耻辱。 那么到底错在哪儿了?该如何去重构它? 今天我想从我的角度来和大家探讨一下业务失败的原因,基于失败再去看重构的逻辑,也许会成功。 从失败中寻找成功的逻辑,往往是最有效的,那我们就来逐一看看: 1、组织的设计问题 我必须把核心原因归结成这一条,很多公司把CMDB的建设责任放到基础设施建设部门,由他们主导承建。最后他们梳理出来的核心逻辑是面向基础设施资源的管理,你在他们的CMDB中都能看到如下菜单,AIX主机是哪些,中间件有哪些,大小机有哪些,Oracle有哪些等等,这些都是和公司的IT运维部门组织结构是一一对应的。组织的隔离是CMDB失败的核心原因! 这个里面能看到一些CMDB管理能力错位,拿两个例子来说一下: A、中间件。 一直搞不明白为什么中间件要作为一个单独的对象来管理,“皮之不存,毛将附焉”。没有主机,没有业务这个皮,哪来的中间件。把他单独拿出来管理,纯粹就是为了满足组织的一个管理视角。从来没人想过,这是主机上的一个资源对象,应该是一个附属资源,其实对他的信息管理和机器上的CPU、网卡一样。 B、进程对象,比如说数据库 这个是另外一种管理错位,是专业的管理平台应该去履行的管理职责,结果放到CMDB平台中了

Dubbo 如何成为连接异构微服务体系的最佳服务开发框架

此生再无相见时 提交于 2019-12-27 16:47:31
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 从编程开发的角度来说,Apache Dubbo (以下简称 Dubbo )首先是一款 RPC 服务框架,它最大的优势在于提供了面向接口代理的服务编程模型,对开发者屏蔽了底层的远程通信细节。同时 Dubbo 也是一款服务治理框架,它为分布式部署的微服务提供了服务发现、流量调度等服务治理解决方案。 在这篇文章中,我们将以以上基础能力为背景,尝试突破 Dubbo 体系自身,探索如何利用 Dubbo 对多协议、多服务发现模型的支持,来实现异构微服务体系间的互联互通。在实际业务场景中,这可以用来解决异构技术体系共存场景下的通信问题,帮助公司实现在异构技术体系间作平滑迁移,解决大规模跨区域、多集群部署场景的地址发现及流量调度等问题。 面向接口代理的透明服务开发框架 我们还是从 Dubbo 是一个微服务开发框架 这个大家熟知的概念开始。就像 Spring 是开发 Java 应用的基础框架一样,我们经常会选用 Dubbo 作为开发微服务业的基础框架。 Dubbo 框架的最大优势我认为就在其面向接口的编程模型,使得开发远程服务调用就像开发本地服务一样(以 Java 语言为例): 服务定义 public interface GreetingsService { String sayHi(String name); }

Sentinel分布式限流组件,SpringCloud Alibaba整合

こ雲淡風輕ζ 提交于 2019-12-27 05:17:45
Sentinel 是什么? 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。 Sentinel 具有以下特征: 丰富的应用场景 :Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。 完备的实时监控 :Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。 广泛的开源生态 :Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。 完善的 SPI 扩展点 :Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。 以上是官网对sentinel的一个介绍,本篇文章不讲原理,只讲搭建和使用。官网: https://github.com/alibaba/Sentinel/ 正式开始之前我们先来看一下sentinel提供的dashboard界面: 通过 https:/

物流系统高可用架构案例

南笙酒味 提交于 2019-12-25 22:24:03
系统可用率 多级缓存 动态分组切换 DB物理隔离 服务分组隔离 跨机房隔离 漏斗模型 DB限流 系统一般可以分为前端应用系统和后端数据库系统,前端应用系统实施分布式集群部署技术上是比较成熟的,后端数据库系统实现异地多活技术难度很大,目前也只有阿里,京东这样的公司才真正实现。因此,对于大多数应用,前端应用双机房集群部署,后端数据库系统采取成熟的主备从的模式,也就是单个机房作为写入,备库在另外机房,可以快速进行切换,读库双机房部署,是优选的方案。对于这个架构方案,存在跨机房写延长的问题,可以根据场景利用异步的方式进行解决,一般也是没有问题的。对于系统来讲,也有些特别,利用分拣中心的本地服务器和操作人员的设备,实现离线生产,进一步提高可用性。 大系统小做,服务拆分 ,是互联网应用的特点,也符合敏捷交付的理念。对于传统软件,如Windows,Office等,都要经过一个漫长的需求,研发,测试,发布周期,在“唯快不破”的互联网时代,这显然是无法满足业务要求的,即使最后上线,也可能因为周期太长而不再适用了。因此,对一个互联网服务,一般会首先完成最核心的功能,快速进行上线,不断进行迭代,后续再进行辅助功能跟进。对于核心功能,随着用户数的增加,会不断进行服务拆分,如何进行拆分,拆分到什么样的粒度,是不是微服务是解决问题的银弹?这些都要根据实际的应用场景来评估,绝不是越细越好

可闭环、可沉淀、可持续的企业级数据赋能体系

孤者浪人 提交于 2019-12-25 17:08:13
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 以下内容根据演讲视频以及PPT整理而成。 本次分享主要围绕以下两个方面: 一、构建可闭环、可沉淀、可持续的企业级数据赋能体系的背景 二、开发者数据银行 一、构建可闭环、可沉淀、可持续的企业级数据赋能体系的背景 1.数据“四化” 如何让属于企业自己的不同触点的数据快速形成一个闭环,沉淀串联这些零散的数据能够快速应用去赋能业务?这涉及到四个关键词,一是业务数据化,企业所有触点是否为真,是否被打通。第二是数据资产化,能否可以像管理资产一样很好地管理数据。第三是资产应用化,企业的资产能否有效应用?如何借助数据资产赋能业务,最后是应用价值化。所有的应用最终一定是为增长、为获客而服务,必须要有价值。在这背后最重要的是场景必须可闭环,数据必须可沉淀,最终数据中台、数据能源才是可持续的。 2.构建可闭环、可沉淀的数据赋能体系的意义与价值 下图展示了一套可闭环、可沉淀、可持续的企业级数据赋能体系是如何构建的。下图友盟+会推出一个面向企业的数据银行。数据银行和业务是一种什么样的协作关系?开发者数据银行会基于云基础设施,如MaxComput等,不断帮助企业采集各种场景、触点的数据,做相应的数据治理、提纯、模型加工、形成各种应用服务,基于UMID打通能力,多账号归一,多端归一,支持不同的终端数据打通(移动客户端、服务端

消息中间件ActiveMQ使用详解

六月ゝ 毕业季﹏ 提交于 2019-12-25 05:39:57
一、消息中间件的介绍 1、介绍 ​ 消息队列 是指利用 高效可靠 的 消息传递机制 进行与平台无关的 数据交流,并基于 数据通信 来进行分布式系统的集成。 2、特点(作用): 应用解耦 异步通信 流量削峰 (海量)日志处理 消息通讯 3、应用场景 根据消息队列的特点,可以衍生出很多场景,或者说很多场景都能用到。下面举几个例子: 1)异步通信 ​ 注册时的短信、邮件通知,减少响应时间; 2)应用解耦 ​ 信息发送者和消息接受者无需耦合,比如调用第三方; 3)流量削峰 ​ 例如秒杀系统; 借鉴:https://www.cnblogs.com/yanfei1819/p/10615605.html 来源: CSDN 作者: 深拥不弃0924 链接: https://blog.csdn.net/qq_44746074/article/details/103686534

Dubbo 如何成为连接异构微服务体系的最佳服务开发框架

霸气de小男生 提交于 2019-12-24 04:07:27
从编程开发的角度来说,Apache Dubbo (以下简称 Dubbo)首先是一款 RPC 服务框架,它最大的优势在于提供了面向接口代理的服务编程模型,对开发者屏蔽了底层的远程通信细节。同时 Dubbo 也是一款服务治理框架,它为分布式部署的微服务提供了服务发现、流量调度等服务治理解决方案。 在这篇文章中,我们将以以上基础能力为背景,尝试突破 Dubbo 体系自身,探索如何利用 Dubbo 对多协议、多服务发现模型的支持,来实现异构微服务体系间的互联互通。在实际业务场景中,这可以用来解决异构技术体系共存场景下的通信问题,帮助公司实现在异构技术体系间作平滑迁移,解决大规模跨区域、多集群部署场景的地址发现及流量调度等问题。 面向接口代理的透明服务开发框架 我们还是从 Dubbo 是一个微服务开发框架 这个大家熟知的概念开始。就像 Spring 是开发 Java 应用的基础框架一样,我们经常会选用 Dubbo 作为开发微服务业的基础框架。Dubbo 框架的最大优势我认为就在其面向接口的编程模型,使得开发远程服务调用就像开发本地服务一样(以 Java 语言为例): 1、服务定义 public interface GreetingsService { String sayHi(String name); } 2、消费方调用服务 // 和调用本地服务一样,完全透明。 @Reference