Browsed by
标签: Spring

带你了解负载均衡

带你了解负载均衡

閱讀本文約花費: 7 (分鐘)相信很多小伙伴的公司都是服务治理,自动化运维了吧,那么我们很多东西都变成我们自己去设置了,比如自己创建一个域名,绑定他的代理机器,它的web负载均衡这些东西。所以今天跟大家一起来看看负载均衡。 你怎么看负载均衡 负载均衡是高可用网络基础架构的关键组件,通常用于将工作负载分布到多个服务器来提高网站、应用、数据库或其他服务的性能和可靠性。 相信很多小伙伴,一听到负载均衡四个字,第一个想到就是我们所说的Nginx吧,因为这个是离我们开发比较近的一个组件了。 第二个呢?就是我们Springcloud的组件中自带了负载均衡(ribbon),这个也是离我们开发比较近的 第三个?就是其实我们k8s里面的服务也是能做负载均衡的,目前主流容器使用方式 第四个就是我们DNS之后的一个负载均衡了SLB(这个之前运费负责的多点) 为啥要负载均衡呢? 大家看下面的图,当我们访问一个网站的时候,如果突然的流量增加,就会导致我们的服务不可用(单点故障) image.png 一个没有负载均衡的 web 架构类似下面这样: image.png 所以为了解决单点问题我们需要负载均衡(也是我们高可用,高性能,高并发的基石) 有负载均衡的架构 image.png web架构 image.png 聊聊SLB image.png 相信很多公司都有用到吧。 负载均衡的组成 负载均衡实例 (Inst…

Read More Read More

技术名站

技术名站

閱讀本文約花費: 6 (分鐘)收藏一些有关网站开发、建设、SEO、技术学习与交流的名站,也可以说是我认为对我和对广大网站爱好者们有学习参考价值的网站、个人博客等。 IT新闻类 51CTO.COM 中国领先的IT技术网站 雷锋网 新技术 E4A 易安卓,以下简称E4A,是一个基于谷歌Simple语言的编程工具,旨在实现通过类似易语言的Basic语法轻松编写Android应用程序。只要你有易语言的基础,就可以很轻松上手。E4A拥有和易语言一样的可视化开发环境,以及强大的智能语法提示功能。纯中文编写代码,比英文更具亲和力,您也无需为记不住英文关键词而烦恼。E4A已经内置了Android1.5开发包SDK,您只需额外下载安装Java1.6开发包JDK即可。目前E4A还处于初级阶段。 RabbitMQ 是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库 织梦 织梦标签生成器//tools.dedecms.com/dedetag_maker.html 织梦帮助中心//help.dedecms.com/ 织梦二次开发帮助手册(这个页面我打开是有乱码,在浏览器中字符编码再点一下“简体中文”就好了)//tool…

Read More Read More

补习系列-springboot项目基础搭建课

补习系列-springboot项目基础搭建课

閱讀本文約花費: 10 (分鐘)前言 springboot 最近火的不行,目前几乎已经是 spring 家族最耀眼的项目了。抛开微服务、技术社区这些推广因素不说,框架本身的确有非常多的优点。比如 更简化的配置,摒除了许多繁杂的xml配置(事实证明,越简单的东西越容易让人记住); 内置Servlet容器,不再依赖外部环境 大量的starter模块,随手拈来 支持热部署 作为一名老程序员来说,仍然需要保持一个积极学习的态度。哎,简单点说就是少点伤感,认清现实。你曾经引以为傲的某某EE 技术已经被颠覆了,赶紧换车道 ….. 废话不多说,以下内容主要讲的是怎么利用springboot 这个脚手架搭建一个最精简的项目。其中几个模块会非常实用,这包括结构、配置、日志、部署.. 一、基础结构 springboot 项目仍然是使用maven 进行初始化及构建,下面是一个典型的结构: 目录文件 说明 pom.xml 依赖文件 src/main/java 代码目录 src/main/resources 配置目录,包含application.properties、log4j2.xml src/main/build 定义构建文件目录 src/test/java 测试代码 src/test/resources 测试配置 大致看一下就行了,不了解maven的话,点击这里先学习入门,项目的构建工具是…

Read More Read More

https://daniel.haxx.se/about.html

https://daniel.haxx.se/about.html

閱讀本文約花費: 21 (分鐘)This is the story of my background. What I’ve done and how I ended up like this. Daniel Stenberg I was born and raised in Huddinge, a suburb south of Sweden’s capital Stockholm. I have two brothers and two sisters. 1985 – it begins I discovered the joy of computers for the first time sometime in the early 80s when Kjell, a friend of mine, and I entered data sets in Basic that we eagerly read in some of the first C64 magazines at his place and since then I’ve been hooked. Kjell owned a C64 before me so it was in his home I had my first experiences in the …

Read More Read More

The Twelve-Factor App

The Twelve-Factor App

閱讀本文約花費: 3 (分鐘)III. 配置 在环境中存储配置 通常,应用的 配置 在不同 部署 (预发布、生产环境、开发环境等等)间会有很大差异。这其中包括: 数据库,Memcached,以及其他 后端服务 的配置 第三方服务的证书,如 Amazon S3、Twitter 等 每份部署特有的配置,如域名等 有些应用在代码中使用常量保存配置,这与 12-Factor 所要求的代码和配置严格分离显然大相径庭。配置文件在各部署间存在大幅差异,代码却完全一致。 判断一个应用是否正确地将配置排除在代码之外,一个简单的方法是看该应用的基准代码是否可以立刻开源,而不用担心会暴露任何敏感的信息。 需要指出的是,这里定义的“配置”并不包括应用的内部配置,比如 Rails 的 config/routes.rb,或是使用 Spring 时 代码模块间的依赖注入关系 。这类配置在不同部署间不存在差异,所以应该写入代码。 另外一个解决方法是使用配置文件,但不把它们纳入版本控制系统,就像 Rails 的 config/database.yml 。这相对于在代码中使用常量已经是长足进步,但仍然有缺点:总是会不小心将配置文件签入了代码库;配置文件的可能会分散在不同的目录,并有着不同的…

Read More Read More

从基础设施到云原生应用,全方位解读阿里云原生新锐开源项目

从基础设施到云原生应用,全方位解读阿里云原生新锐开源项目

閱讀本文約花費: 11 (分鐘)简介: 2020年11月19日,由 InfoQ 主办的“2020中国技术力量年度榜单盛典”隆重召开,阿里云技术专家罗毅荣获“十大开源杰出贡献人物”、Open Application Model(OAM)荣登“十大开源新锐项目”、由阿里云原生团队支撑的完美日记电商业务案例获评“2020年度十大云原生行业落地典范”,阿里云原生拿了一个分量十足的“大满贯”。 2020年11月19日,由 InfoQ 主办的“2020中国技术力量年度榜单盛典”隆重召开,并正式揭晓了“开源杰出贡献人物”、“开源新锐项目”和“云原生行业落地典范”三大重量级奖项。在此前的入围赛中,仅“开源新锐项目”单项,阿里云原生就入围了10多个开源项目,在创新能力、社区成就和用户反馈等多项指标中一骑绝尘,占据了参评项目整体近五分之一。而在本次揭晓的“2020中国技术力量年度榜单”决赛结果中,最终阿里云技术专家罗毅荣获“十大开源杰出贡献人物”、Open Application Model(OAM)荣登“十大开源新锐项目”、由阿里云原生团队支撑的完美日记电商业务案例获评“2020年度十大云原生行业落地典范”,阿里云原生拿了一个分量十足的“大满贯”。 在 2020 年,阿里不仅实现了双十一核心系统全面云原生化,一举成为全球规模最大、实力最硬核的云原生实践,并首次实现自研、开源、商业“三位一体…

Read More Read More

Service Mesh实践之Istio初体验

Service Mesh实践之Istio初体验

閱讀本文約花費: 16 (分鐘)微服务国内发展背景: 2014年,Martin Fowler撰写的《Microservices》使得许多国内的先行者接触到微服务这个概念并将其引入国内,2015年越来越多的人通过各种渠道了解到微服务的概念并有人开始在生产环境中落地,2016-2017年,微服务的概念被越来越多的人认可,带动了一大批公司以微服务和容器为核心开始技术架构的全面革新。 至今微服务已经历了两代发展,第一代以Spring Cloud为代表的微服务开发框架,该框架在微服务发展的前几年一度独领风骚,甚至在部分人群中成为微服务的代名词,但事实上该微服务框架并不是唯一实现微服务的方式;第二代微服务技术为服务网格(Service Mesh),它的出现解决了大部分开发人员在使用Spring Cloud中遇到的不足和痛点。 Service Mesh是如何解决这些问题的,又是何以赢得众多开发者的支持呢?笔者就这些问题给大家分享一篇以Istio为代表的第二代微服务实践。 一、微服务和Istio Service Mesh基本概念 服务网格是一个基础设施层,主要用于处理服务间的通信。云原生应用有着复杂的服务拓扑,服务网格负责在这些拓扑中实现请求的可靠传递。在实践中,服务网格通常实现为一组轻量级网络代理,它们与应用程序部署在一起,而对应用程序透明。 图1展示了服务网格的拓扑,当微服务数量增多达到几十上…

Read More Read More

图文:千万级高性能长连接网关是如何搭建的?

图文:千万级高性能长连接网关是如何搭建的?

閱讀本文約花費: 17 (分鐘)实时的响应总是让人兴奋的,就如你在微信里看到对方正在输入,如你在王者峡谷里一呼百应,如你们在直播弹幕里不约而同的 666,它们的背后都离不开长连接技术的加持。 每个互联网公司里几乎都有一套长连接系统 ,它们被应用在消息提醒、即时通讯、推送、直播弹幕、游戏、共享定位、股票行情等等场景。而当公司发展到一定规模,业务场景变得更复杂后,更有可能是多个业务都需要同时使用长连接系统。 业务间分开设计长连接会导致研发和维护成本陡增、浪费基础设施、增加客户端耗电、无法复用已有经验等等问题。共享长连接系统又需要协调好不同系统间的认证、鉴权、数据隔离、协议拓展、消息送达保证 等等需求,迭代过程中协议需要向前兼容,同时因为不同业务的长连接汇聚到一个系统导致容量管理的难度也会增大。 经过了一年多的开发和演进,经过我们服务面向内和外的数个 App、接入十几个需求和形态各异的长连接业务、数百万设备同时在线、突发大规模消息发送等等场景的锤炼,我们提炼出一个长连接系统网关的通用解决方案,解决了多业务共用长连接时遇到的种种问题。 知乎长连接网关致力于业务数据解耦、消息高效分发、解决容量问题,同时提供一定程度的消息可靠性保证。 我们怎么设计通讯协议? 业务解耦 支撑多业务的长连接网关实际上是同时对接多客户端和多业务后端的,是多对多的关系,他们之间只使用一条长连接通讯。 这种多对多的系统…

Read More Read More

微服务架构下的分布式限流方案全解析

微服务架构下的分布式限流方案全解析

閱讀本文約花費: 9 (分鐘)1.微服务限流 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。缓存、降级和限流是保护微服务系统运行稳定性的三大利器。 缓存的目的是提升系统访问速度和增大系统能处理的容量,而降级是当服务出问题或者影响到核心流程的性能则需要暂时屏蔽掉,待高峰或者问题解决后再打开,而有些场景并不能用缓存和降级来解决,比如稀缺资源、数据库的写操作、频繁的复杂查询,因此需有一种手段来限制这些场景的请求量,即限流。 比如当我们设计了一个函数,准备上线,这时候这个函数会消耗一些资源,处理上限是1秒服务3000个QPS,但如果实际情况遇到高于3000的QPS该如何解决呢? 所以限流的目的应当是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达到限制速率就可以拒绝服务、等待、降级。 学习如何去实现一个分布式限流框架,首先,我们需要去了解最基本的两种限流算法。 2.限流算法 2.1漏桶算法 漏桶算法思路很简单,水(也就是请求)先进入到漏桶里,漏桶以一定的速度出水,当水流入速度过大会直接溢出,然后就拒绝请求,可以看出漏桶算法能强行限制数据的传输速率。示意图(来源网络)如下: 2.2令牌桶算法 令牌桶算法和漏桶算法效果一样但方向相反的算法,更加容易理解。随着时间流逝,系统会按恒定1/QPS时间间隔(如果QPS=100,则间隔是10ms)往桶里加入令牌(…

Read More Read More

SpringCloud之Ribbon负载均衡的入门操作

SpringCloud之Ribbon负载均衡的入门操作

閱讀本文約花費: 6 (分鐘)使用Ribbon进行负载均衡 在使用Ribbon之前,我们先想一个之前的问题,之前我们将服务提供者注册进了eureka注册中心,但是在消费者端,我们还是使用的restTemplate调用的时候,其中写的还是http://localhost:8001这样的调用方式,是不是有一些不妥呢?是不是应用像dubbo那样,使用服务名进行调用呢?不然,我们使用注册中心有什么用呢? 好的呢,我们先保留这个思考 。来进入Ribbon的学习 什么是Ribbon? Ribbon [?r?b?n] ,是SpringCloud Netflix中的一个关于客户端的负载均衡插件。 主要解释如下: 这个客户端主要是指服务消费者,也就是说,这个插件是用在消费者端的,它自己会根据一些算法对相同服务的提供者(也就是这几个服务提供者的application.name要相同)进行甄别,自己决定我要访问哪一个服务者。 而Nginx是整个服务器的负载均衡,当浏览器等设备的访问请求进来后,它会根据自身的配置,进行服务的路径选择。 Ribbon的集成(客户端,即消费者) 上边说了,是在消费端进行的负载均衡,所以要修改cousumer端,但为了方便学习,我就新创建了一个项目,demo3-ribbon-consumer,代码和之前的没什么太大的变化。而且,要有多个相同名称的服务提供者才能进行负载均衡,才能…

Read More Read More

SpringCloud-Ribbon[入门案例]

SpringCloud-Ribbon[入门案例]

閱讀本文約花費: 4 (分鐘)一、 Ribbon 在微服务中的作用 1 什么是 Ribbon Ribbon 是一个基于 Http 和 TCP 的客服端负载均衡工具,它是基于 Netflix Ribbon 实现的。 它不像 spring cloud 服务注册中心、配置中心、API 网关那样独立部署,但是它几乎存在于每个 spring cloud 微服务中。包括 feign 提供的声明式服务调用也是基于该 Ribbon实现的。 ribbon 默认提供很多种负载均衡算法,例如 轮询、随机 等等。甚至包含自定义的负载均衡算法。 2 Ribbon 解决了什么问题 他解决并提供了微服务的负载均衡的问题。 二、 集中式与进程内负载均衡的区别 1 负载均衡解决方案的分类 目前业界主流的负载均衡方案可分成两类: 第一类:集中式负载均衡, 即在 consumer 和 provider 之间使用独立的负载均衡设施(可以是硬件,如 F5, 也可以是软件,如 nginx), 由该设施负责把 访问请求 通过某种策略转发至 provider; 第二类:进程内负载均衡,将负载均衡逻辑集成到 consumer,consumer 从服务注册中心获知有哪些地址可用,然后自己再从这些地址中选择出一个合适的 provider。Ribbon 就属于后者,它只是一个类库,集成于 consumer 进程,consumer 通过它…

Read More Read More

6种微服务RPC框架,你知道几个?

6种微服务RPC框架,你知道几个?

閱讀本文約花費: 7 (分鐘)跟语言平台绑定的开源 RPC 框架主要有下面几种。 Dubbo:国内最早开源的 RPC 框架,由阿里巴巴公司开发并于 2011 年末对外开源,仅支持 Java 语言。 Motan:微博内部使用的 RPC 框架,于 2016 年对外开源,仅支持 Java 语言。 Tars:腾讯内部使用的 RPC 框架,于 2017 年对外开源,仅支持 C++ 语言。 Spring Cloud:国外 Pivotal 公司 2014 年对外开源的 RPC 框架,仅支持 Java 语言 而跨语言平台的开源 RPC 框架主要有以下几种。 gRPC:Google 于 2015 年对外开源的跨语言 RPC 框架,支持多种语言。 Thrift:最初是由 Facebook 开发的内部系统跨语言的 RPC 框架,2007 年贡献给了 Apache 基金,成为 Apache 开源项目之一,支持多种语言。 如果你的业务场景仅仅局限于一种语言的话,可以选择跟语言绑定的 RPC 框架中的一种; 如果涉及多个语言平台之间的相互调用,就应该选择跨语言平台的 RPC 框架。 RPC 框架,它们具体有何区别? 1. Dubbo 先来聊聊 Dubbo,Dubbo 可以说是国内开源最早的 RPC 框架了,目前只支持 Java 语言,它的架构可以用下面这张图展示。 从图中你能看到,Dubbo 的架构主要包含四…

Read More Read More

项目架构之传统三层架构和领域模型三层架构

项目架构之传统三层架构和领域模型三层架构

閱讀本文約花費: 18 (分鐘)一、工程结构 本系列文章所示范的项目基于传统三层架构进行分层,基于工作职责和Maven结构进行模块划分。本文将对传统三层架构和对应的领域模型架构、以及每个模块的职责进行简单的说明。下图即示范项目的模块结构: 二、架构之传统三层架构 传统三层架构是一种软件架构,是一种典型的、基于贫血模型的、面向过程的JavaWeb分层方式。该架构分为以下三个层次: 数据访问层(DAL – Data Access Layer)即对包括数据库在内的数据源进行操作的部分。 业务逻辑层(BLL – Business Logic Layer)即对业务数据进行逻辑处理的部分。 表现层(UI – User Interface)即与用户交互的部分。 分层的目的是为了解耦和明确责任。开发人员可以只关心自己所负责的那一层,因为他只需要知道上一层提供了哪些接口,从而利用这些接口进行编程。而上一层的开发人员在不改变接口的情况下,可以任意地替换具体的实现,从而实现松耦合。 相比更传统的架构,三层架构有着明显的优势,但也有不可忽视的缺点。初期的JavaWeb在JSP内同时进行数据库读写、业务逻辑处理和页面渲染,简单而暴力。而今的架构,在JSP之上增加了一个处理业务逻辑的中间层和一个封装了数据库操作的数据访问层,毫无疑问造成了代码量的大幅度上升和效率的下降。 本…

Read More Read More

深入解读Service Mesh背后的技术细节

深入解读Service Mesh背后的技术细节

閱讀本文約花費: 14 (分鐘)一、Service Mesh是Kubernetes支撑微服务能力拼图的最后一块 在上一篇文章为什么 kubernetes 天然适合微服务中我们提到,Kubernetes是一个奇葩所在,他的组件复杂,概念复杂,在没有实施微服务之前,你可能会觉得为什么Kubernetes要设计的这么复杂,但是一旦你要实施微服务,你会发现Kubernetes中的所有概念,都是有用的。 在我们微服务设计的是个要点中,我们会发现Kubernetes都能够有相应的组件和概念,提供相应的支持。 其中最后的一块拼图就是服务发现,与熔断限流降级。 众所周知,Kubernetes的服务发现是通过Service来实现的,服务之间的转发是通过kube-proxy下发iptables规则来实现的,这个只能实现最基本的服务发现和转发能力,不能满足高并发应用下的高级的服务特性,比较SpringCloud和Dubbo有一定的差距,于是Service Mesh诞生了,他期望讲熔断,限流,降级等特性,从应用层,下沉到基础设施层去实现,从而使得Kubernetes和容器全面接管微服务。 二、以Istio为例讲述Service Mesh中的技术关键点 就如SDN一样,Service Mesh将服务请求的转发分为控制面和数据面,因而分析他,也是从数据面先分析转发的能力,然后再分析控制面如何下发命令。今天这篇…

Read More Read More

云原生架构概述

云原生架构概述

閱讀本文約花費: 9 (分鐘)1. 什么是云原生 1.1 CNCF组织 在讲云原生之前,我们先了解一下CNCF,即云原生计算基金会,2015年由谷歌牵头成立,基金会成员目前已有一百多企业与机构,包括亚马逊、微软。思科等巨头。 目前CNCF所托管的应用已达14个,下图为其公布的Cloud Native Landscape,给出了云原生生态的参考体系。 1.2 云原生 CNCF给出了云原生应用的三大特征: 容器化封装:以容器为基础,提高整体开发水平,形成代码和组件重用,简化云原生应用程序的维护。在容器中运行应用程序和进程,并作为应用程序部署的独立单元,实现高水平资源隔离。 动态管理:通过集中式的编排调度系统来动态的管理和调度。 面向微服务:明确服务间的依赖,互相解耦。 云原生包含了一组应用的模式,用于帮助企业快速,持续,可靠,规模化地交付业务软件。云原生由微服务架构,DevOps 和以容器为代表的敏捷基础架构组成。 这边引用网上关于云原生所需要的能力和特征总结,如下图。 云原生所需要的能力和特征 1.3 The Twelve Factors 12-Factors经常被直译为12要素,也被称为12原则,12原则由公有云PaaS的先驱Heroku于2012年提出,目的是告诉开发者如何利用云平台提供的便利来开发更具可靠性和扩展性、更加易于维护的云原生应用。具体如下: 基准代码 显式声明依赖关…

Read More Read More

蚂蚁金服 Service Mesh 实践探索

蚂蚁金服 Service Mesh 实践探索

閱讀本文約花費: 50 (分鐘)摘要 在勇敢的选择了Service Mesh作为未来技术方向之后,蚂蚁金服率先开始了Service Mesh大规模落地探索。在此过程中,我们遇到很多问题,面临各种挑战,也有了一些思路和方法。今天我们将这些实践分享出来,并结合我们开源的SOFAMesh项目,和大家一起探讨:如何更好的将Service Mesh这样的新兴技术落地于实际生产环境。 大家好,我是来自蚂蚁金服中间件团队的敖小剑,目前是蚂蚁金服 Service Mesh 项目的PD。我同时也是 Servicemesher中国技术社区 的创始人,是 Service Mesh 技术在国内最早的布道师。我今天给大家带来的主题是”长路漫漫踏歌而行:蚂蚁金服Service Mesh实践探索”。 今天我们的内容不是继续做 Service Mesh 的布道,今年要好好讲一讲实践。所以今天我不会像去年那样给大家详细解释 Service Mesh 是什么,能做什么,有什么优势。而是结合过去一年中蚂蚁金服的实践经验,结合蚂蚁金服的 SOFAMesh 产品,帮助大家更深刻的理解 Service Mesh 技术。 在开始今天的内容分享之前,我们先来热个身,温习一下去年的内容。去年我是来布道的,而布道的核心内容就是告诉大家:Service Mesh 是什么? 为了帮忙大家回答,我给出一个提示图片,了解 Service M…

Read More Read More

Scroll Up