dubbo
1、基本概念Apache Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现
dubbo可以是微服务的一部分,但不能以偏概全说dubbo就是微服务,微服务涉及的面比较广,比如服务发现,服务治理,服务网关,服务监控,链路追踪等等,可以用到的组件也比较多,而dubbo最多只能说是专注于服务治理的组件,所以从这一点上来看,可替代它的技术也是相当之多的,比如一系列rpc框架都可以
1.1、基本架构
Provider 暴露服务的服务提供方Consumer 调用远程服务的服务消费方Registry 服务注册与发现的注册中心Monitor 统计服务的调用次数和调用时间的监控中心
调用过程:
(1) 服务容器 Container 负责启动加载运行服务提供者 Provider。根据配置中的 Registry 地址连接 Registry,在 Registry 注册自己提供的服务。(2) Consumer 在启动时,根据配置文件中的服务引用信息,连接到 Registry,向 Registry 订阅自己所需的服 ...
springCloud
1、微服务架构1.1、基本概念微服务是一种架构,这种架构是将单个整体应用程序分割成更小的项目关联的独立服务。一个服务通常实现一组独立的特性或功能,包含自己的业务逻辑和适配器。各个微服务之间的关联通过暴露api来实现,这些独立的微服务
1.2、为什么要用微服务?1.2.1、优点
将服务拆分成单一职责的小服务,进行单独部署,服务之间通过网络进行通信
每个服务应该有自己的管理团队,高度自治
服务各自有自己单独的职责,服务之间松耦合,避免因一个模块的问题导致服务崩溃
1.2.2、缺点
开发人员需要处理分布式系统的复杂性
随着服务的增加,运维的压力也在增大
服务治理(负载均衡,服务熔断,服务配置管理)和服务监控
1.3、架构的演变1.3.1、单一架构(all in one)一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是影响项目开发的关键(mybatis,hibernate)
缺点:随着应用功能的增多,代码量越来越大,越来越难维护
1.3.2、垂直架构(vertical application)当访问量逐渐增大,单一应用无法满 ...
RabbitMQ
1、基本基础1.1、mq概念MQ全称Message Queue(消息队列),是在消息传输过程中保存消息的容器。多用于分布式系统之间进行通信
1.2、mq优缺点优势:(1)应用解耦:eg:订单系统不直接调用库存系统,库存系统宕机并不影响下单(2)异步提速:eg:订单系统不需要同步调用库存系统,提升速度(3)削峰填谷:eg:mq承载了5000请求,系统慢慢消费,就是削峰。但是因为消息积压,高峰过一段时间后消息才能被消费完,这就是填谷。
劣势:(1)系统可用性降低:一旦mq宕机,就可能对多个业务造成影响。如何保证mq高可用(2)系统复杂度提高:如何保证消息不被重复消费?怎么处理丢失情况?怎么保证消息传递的顺序性?(3)一致性问题:A系统给B,C,D系统发送数据,如果B,c处理成功,D系统失败。如何保证消息数据处理的一致性
1.3、mq产品选型
指标
ActiveMQ
RabbitMQ
RocketM Q
Kafka
数据量级(每秒)
万级
万级
十万级
十万级
可靠性
低概率丢失
0丢失
0丢失
0丢失
可用性
主从架构
主从架构
分布式
分布式
时效性
毫秒
微秒 ...
juc
1、java多线程基本概念1.1、进程和线程
进程
程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO 的
当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。
进程就可以视为程序的一个实例。大部分程序可以同时运行多个实例进程(例如记事本、画图、浏览器等),也有的程序只能启动一个实例进程(例如网易云音乐、360 安全卫士等)
线程
一个进程之内可以分为一到多个线程。
一个线程就是一个指令流,将指令流中的一条条指令以一定的顺序交给 CPU 执行
Java 中,线程作为最小调度单位,进程作为资源分配的最小单位。 在 windows 中进程是不活动的,只是作为线程的容器
1.2、并发和并行并发:线程轮流使用CPU并行:多核cpu下,多个核同时调度运行线程
1.3、多线程的应用1.3.1、异步调用比如在项目中,视频文件需要转换格式等操作比较费时,这时开一个新线程处理视频转换,避免阻塞主线程
1.3.2、提升效率充分利用多 ...
nginx
1、nginx简介1.1、nginx概述Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理服务器,特点是占有内存少,并发能力强,能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数 。
1.2、正向代理nginx不仅能做反向代理,实现负载均衡,还能用作正向代理来进行上网等功能正向代理:个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并制定目标(原始服务器),然后代理向原始服务器转发请求并将获得的内容返回给客户端,客户端才能使用正向代理。我们平时说的代理就是指正向代理【代理客户端,服务端不知道实际发起请求的客户端】
例子:A向C借钱,由于一些情况不能直接向C借钱,于是A想了一个办法,他让B去向C借钱,这样B就代替A向C借钱,A就得到了C的钱,C并不知道A的存在,B就充当了A的代理人的角色
1.3、反向代理反向代理,以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求的客户端,此时代理服务器对外表现为一个反向代理服务器【代 ...