Dubbo

一文读懂「分布式架构」

ⅰ亾dé卋堺 提交于 2020-08-16 10:11:08
什么是分布式架构? 分布式架构是分布式计算技术的应用和工具,其中J2EE技术应用较为广泛,它简化和规范多层分布式企业应用系统的开发和部署,它可以给分布式应用软件提供在各种技术间共享资源的平台 分布式架构发展 众所周知,传统架构单一无分层,模块之间耦合性过高导致稳定性和扩展性较差,无法满足互联网高速迭代变化的脚步,技术架构也会发生很大变化。传统架构逐渐分化为分布式架构。提供更稳定、容错、高可用的特质。演变过程如下图所示 阶段1 阶段2 阶段3 阶段4 阶段5 分布式架构设计理念和目标 设计理念: 分布式架构的核心理念按照一定维度(功能、业务、领域)等,对系统进行拆分,通过合理的拆分结构,实现各业务模块解耦,同时通过系统级容错设计,在廉价硬件基础设施上构建起高可用、可扩展的开放技术体系。 目标: 设计目标可以明确方向,通过设计驱动和方向的把控,朝着既定方向前行并最终实现目标。设计目标分为以下方面: • 系统拆分 a.以业务为导向,充分了解系统业务模型,按不同层面的业务模型上可以划分为主模型、次模型。业务模型在一定的比例上能够凸显出系统的业务领域及边界 b.业务依赖范围,由于业务存在重复依赖,从业务边界中按照业务功能去细分 c.把拆分结构图梳理出来,按照系统周边影响从小到大逐渐切换 d.拆分过程中尽量不要引入新的技术或者方案,如需讨论评估后再实施 • 业务模块解耦

K8S(15)监控实战-ELK收集K8S内应用日志

佐手、 提交于 2020-08-16 09:58:13
K8S监控实战-ELK收集K8S内应用日志 目录 K8S监控实战-ELK收集K8S内应用日志 1 收集K8S日志方案 1.1 传统ELk模型缺点: 1.2 K8s容器日志收集模型 2 制作tomcat底包 2.1 准备tomcat底包 2.1.1 下载tomcat8 2.1.2 简单配置tomcat 2.2 准备docker镜像 2.2.1 创建dockerfile 2.2.2 准备dockerfile所需文件 2.2.3 构建docker 3 部署ElasticSearch 3.1 安装ElasticSearch 3.1.1 下载二进制包 3.1.2 配置elasticsearch.yml 3.2 优化其他设置 3.2.1 设置jvm参数 3.2.2 创建普通用户 3.2.3 调整文件描述符 3.2.4 调整内核参数 3.3 启动ES 3.3.1 启动es服务 3.3.1 调整ES日志模板 4 部署kafka和kafka-manager 4.1 但节点安装kafka 4.1.1 下载包 4.1.2 修改配置 4.1.3 启动kafka 4.2 获取kafka-manager的docker镜像 4.2.1 方法一 通过dockerfile获取 4.2.2 直接下载docker镜像 4.3 部署kafka-manager 4.3.1 准备dp清单 4.3.2 准备svc资源清单 4

干掉"ZooKeeper",阿里为什么不用ZK做服务发现?

只谈情不闲聊 提交于 2020-08-16 07:34:21
   20 大进阶架构专题每日送达   链接:yq.aliyun.com/articles/601745    2020年Java面试题库连载中   !    正文   站在未来的路口,回望历史的迷途,常常会很有意思,因为我们会不经意地兴起疯狂的念头,例如如果当年某事提前发生了,而另外一件事又没有发生会怎样?一如当年的奥匈帝国皇位继承人斐迪南大公夫妇如果没有被塞尔维亚族热血青年普林西普枪杀会怎样,又如若当年的丘老道没有经过牛家村会怎样?   2007年底,淘宝开启一个叫做“五彩石”的内部重构项目,这个项目后来成为了淘宝服务化、面向分布式走自研之路,走出了互联网中间件体系之始,而淘宝服务注册中心ConfigServer于同年诞生。   2008年前后,Yahoo 这个曾经的互联网巨头开始逐渐在公开场合宣讲自己的大数据分布式协调产品 ZooKeeper,这个产品参考了Google 发表的关于Chubby以及 Paxos 的论文。   2010年11月,ZooKeeper从 Apache Hadoop的子项目发展为 Apache的顶级项目,正式宣告 ZooKeeper成为一个工业级的成熟稳定的产品。   2011年,阿里巴巴开源Dubbo,为了更好开源,需要剥离与阿里内部系统的关系,Dubbo 支持了开源的 ZooKeeper 作为其注册中心,后来在国内,在业界诸君的努力实践下

微服务技术栈:常见注册中心组件,对比分析

对着背影说爱祢 提交于 2020-08-16 07:17:09
本文源码: GitHub·点这里 || GitEE·点这里 一、注册中心简介 1、基础概念 在分布式架构的系统中注册中心这个概念就已经被提出了,最经典的就是Zookeeper中间件。 微服务架构中,注册中心是最核心的基础服务之一,注册中心可以看做是微服务架构中的通信中心,当一个服务去请求另一个服务时,通过注册中心可以获取该服务的状态,地址等核心信息。 服务注册主要关系到三大角色:服务提供者、服务消费者、注册中心。 2、流程和原理 基础流程 服务启动时,将自身的网络地址等信息注册到注册中心,注册中心记录服务注册数据。 服务消费者从注册中心获取服务提供者的地址,并通过地址和基于特定的方式调用服务提供者的接口。 各个服务与注册中心使用一定机制通信。如果注册中心与服务长时间无法通信,就会注销该实例,这也称为服务下线,当服务重新连接之后,会基于一定的策略在线上线。 服务地址相关信息发生变化时,会重新注册到注册中心。这样,服务消费者就无需手工维护提供者的相关配置。 核心功能 通过上面的基本流程,不难发现一个注册中心需要具备哪些核心功能: 服务发现 服务发现是指服务在启动后,注册到注册中心,服务方提供自身的元数据,比如IP地址、端口、运行状况指标的Uri 、主页地址等信息。 服务记录 记录注册中心的服务的信息,例如服务名称、IP地址、端口等。服务消费方基于查询获取可用的服务实例列表。

微服务开发手册之GRPC

|▌冷眼眸甩不掉的悲伤 提交于 2020-08-16 01:48:20
GRPC是一个高性能、通用的开源RPC框架,基于HTTP/2协议标准和Protobuf序列化协议开发,支持众多的开发语言。 @[TOC] 1 简介 在GRPC框架中,客户端可以像调用本地对象一样直接调用位于不同机器的服务端方法,如此我们就可以非常方便的创建一些分布式的应用服务。 在服务端,我们实现了所定义的服务和可供远程调用的方法,运行一个gRPC server来处理客户端的请求;在客户端,gRPC实现了一个stub(可以简单理解为一个client),其提供跟服务端相同的方法。 gRPC使用protocol buffers作为接口描述语言(IDL)以及底层的信息交换格式,一般情况下推荐使用 proto3因为其能够支持更多的语言,并减少一些兼容性的问题。 由于gRPC涉及到几个比较重要的技术点http2、protobuf,正是这几个技术点才使得gRPC得到广泛应用,这里也顺带讲一下这几个技术点 1.1 http2 HTTP/2是最新的HTTP协议,提高了资源访问效率。通过本篇科普小文,可以了解HTTP/2协议的概念以及优势。 HTTP/2也被称为HTTP 2.0,相对于HTTP 1.1新增多路复用、压缩HTTP头、划分请求优先级、服务端推送等特性,解决了在HTTP 1.1中一直存在的问题,优化了请求性能,同时兼容了HTTP 1.1的语义。 2015年,HTTP/2 发布。HTTP

中间件地址整理

旧时模样 提交于 2020-08-16 00:24:57
Sentinel :把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。 Nacos :一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 RocketMQ :一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。 Dubbo :Apache Dubbo™ 是一款高性能 Java RPC 框架。 Seata :阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。 Alibaba Cloud ACM :一款在分布式架构环境中对应用配置进行集中管理和推送的应用配置中心产品。 Alibaba Cloud OSS : 阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。 Alibaba Cloud SchedulerX : 阿里中间件团队开发的一款分布式任务调度产品,提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。 Alibaba Cloud SMS : 覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。 来源: oschina 链接: https://my.oschina.net/u

阿里云MSE 2.0重磅发布,乘风破浪加速企业微服务化进程

最后都变了- 提交于 2020-08-15 17:49:04
发布会传送门 点击了解产品详情 众所周知,注册中心和配置中心是Spring Cloud 和Dubbo 等微服务架构中的重要组件,往往采用 ZooKeeper/Nacos/Eureka/Apollo 等开源方案自建,但因其依赖复杂、变更频繁,往往给客户带来的较高的建设和运维成本,同时,在 Hbase、Spark或Kafka 等大数据的环境下,会依赖 ZooKeeper 进行分布式系统的协调,此时,基于云上的托管服务,可以极大的降低运维复杂度,并提高应用可用性。相比开源自建,微服务引擎MSE 通过提供的云上监控和运维能力、多机房和多区域容灾能力、自动宕机恢复能力,实现了99.9%的可用性保障,此外,MSE提供了多打25项的开源优化,提升了注册和配置中心的易用性和性能。3分钟便能完成接入,每月最低50.16元,更是从操作和价格上降低了企业的接入成本。 据微服务引擎MSE产品经理子墚介绍,“我们除了提供注册和配置中心的托管能力,还围绕困扰开发者微服务治理过程遇到的各类运维难题,提供了包括金丝雀发布、离群实例摘除、服务鉴权、无损下线、限流降级和全链路流控的高阶微服务治理能力,极大的降低了微服务的运维难度,其组件型的产品理念还帮助客户实现了云上应用的自主可控。“目前,已有包括陆德科技、吉递换电、趣练习、企迈云商等来自出行、物联网、在线教育、新零售等行业的客户正通过 MSE 来提升运维效率

聊聊dubbo-go的randomLoadBalance

随声附和 提交于 2020-08-15 15:32:40
序 本文主要研究一下dubbo-go的randomLoadBalance randomLoadBalance dubbo-go-v1.4.2/cluster/loadbalance/random.go const ( name = "random" ) func init() { extension.SetLoadbalance(name, NewRandomLoadBalance) } type randomLoadBalance struct { } // NewRandomLoadBalance ... func NewRandomLoadBalance() cluster.LoadBalance { return &randomLoadBalance{} } randomLoadBalance的NewRandomLoadBalance方法创建randomLoadBalance Select dubbo-go-v1.4.2/cluster/loadbalance/random.go func (lb *randomLoadBalance) Select(invokers []protocol.Invoker, invocation protocol.Invocation) protocol.Invoker { var length int if length = len

最新版Dubbo-admin 服务器部署

蹲街弑〆低调 提交于 2020-08-15 12:53:04
1、下载dubbo-admin服务器版本 2、上传至服务器, 并解压 tar -zxvf xxxx.tar.gz 3、进入解压后的目录 4、默认启动8080端口, 可能会存在冲突, 修改 dubbo-admin-server 的端口 修改 dubbo-admin-ui 的端口 4、进行打包 mvn clean,mvn package 执行至这个位置可能会报 npm run build faild; 进入 dubbo-admin-ui 目录执行 npm run build 发现会报 building for production...Killed ; 是 服务器内存不够用了,这样就给他配置一个单独的内存出来就解决了; 执行命令: sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024 sudo /sbin/mkswap /var/swap.1 sudo /sbin/swapon /var/swap.1 然后再次 mvn clean, mvn package; 会在这个 位置等待安装十多二十分钟, 而且再新开一个终端执行命令会花很长时间; 下图表示正在构建node, 打包成功: 进入到 dubbo-admin-distribution 目录中 执行命令: java -jar dubbo-admin-0.2.0.jar 启动成功

从零到壹搭建大规模应用技术架构演进-蛙课网

限于喜欢 提交于 2020-08-15 12:49:46
从零搭建 > 刚开始的时候,也就是创业初期或网站/产品初期,业务功能比较少,访问量也不大,通过就是采用经典的MVC架构,采用单体应用的模式进行开发,然后发布到Tomcat容器中运行,这时候我们的文件,数据库,应用都在一个服务器上,没有缓存,不追求性能优化与网站架构。 服务分离 > 随着业务的发展,系统功能的增多,访问用户量的增加,显然采用单台服务器已无法满足系统的负载,这时候,我们就需要提前采取相应的措施,应对访问流量的增加。由于我们是单体架构,优化架构在短时间内是不现实的,增加机器是一个不错的选择。这时候,我们可以把应用和数据库服务分开单独部署,如果有条件也可以把文件服务器单独部署。 集群部署 > 为了提升服务处理能力,我们通常会将Tomcat容器进行集群部署,集群主要分为三大类( 高可用集群, 负载均衡集群,科学计算集群)。我们最生产中最常见的就是负载均衡集群。 负载均衡 > 集群部署之后,我们不能让用户通过两个入口访问我们的服务,而是统一访问入口,此时我们可以在Tomcat容器前加一个负载均衡代理服务器,业界比较流行的是采用Nginx,当然使用apache也未尝不可。 用户的请求发送给Nginx反向代理服务器,然后反向代理把请求转发到后端的应用服务器。 严格意义上来说,Nginx是属于web服务器,一般用于处理静态html、css、js请求,而Tomcat属于web容器