Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
晶之木
advanced-java
提交
0233b586
A
advanced-java
项目概览
晶之木
/
advanced-java
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
advanced-java
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
0233b586
编写于
4月 01, 2019
作者:
Y
yanglbme
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
docs: format docs in dubbo
上级
9cc870a4
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
6 addition
and
10 deletion
+6
-10
docs/distributed-system/distributed-system-idempotency.md
docs/distributed-system/distributed-system-idempotency.md
+1
-1
docs/distributed-system/dubbo-operating-principle.md
docs/distributed-system/dubbo-operating-principle.md
+1
-1
docs/distributed-system/dubbo-service-management.md
docs/distributed-system/dubbo-service-management.md
+1
-6
docs/distributed-system/dubbo-spi.md
docs/distributed-system/dubbo-spi.md
+1
-1
docs/high-concurrency/redis-single-thread-model.md
docs/high-concurrency/redis-single-thread-model.md
+1
-0
docs/high-concurrency/why-cache.md
docs/high-concurrency/why-cache.md
+1
-1
未找到文件。
docs/distributed-system/distributed-system-idempotency.md
浏览文件 @
0233b586
...
...
@@ -6,7 +6,7 @@
一个分布式系统中的某个接口,该如何保证幂等性?这个事儿其实是你做分布式系统的时候必须要考虑的一个生产环境的技术问题。啥意思呢?
你看,假如你有个服务提供一
个接口,结果这
服务部署在了 5 台机器上,接着有个接口就是
**付款接口**
。然后人家用户在前端上操作的时候,不知道为啥,总之就是一个订单
**不小心发起了两次支付请求**
,然后这俩请求分散在了这个服务部署的不同的机器上,好了,结果一个订单扣款扣两次。
你看,假如你有个服务提供一
些接口供外部调用,这个
服务部署在了 5 台机器上,接着有个接口就是
**付款接口**
。然后人家用户在前端上操作的时候,不知道为啥,总之就是一个订单
**不小心发起了两次支付请求**
,然后这俩请求分散在了这个服务部署的不同的机器上,好了,结果一个订单扣款扣两次。
或者是订单系统调用支付系统进行支付,结果不小心因为
**网络超时**
了,然后订单系统走了前面我们看到的那个重试机制,咔嚓给你重试了一把,好,支付系统收到一个支付请求两次,而且因为负载均衡算法落在了不同的机器上,尴尬了。。。
...
...
docs/distributed-system/dubbo-operating-principle.md
浏览文件 @
0233b586
...
...
@@ -2,7 +2,7 @@
说一下的 dubbo 的工作原理?注册中心挂了可以继续通信吗?说说一次 rpc 请求的流程?
## 面试官心理分析
MQ、ES、Redis、Dubbo,上来先问你一些
思考的问题,原理(kafka 高可用架构原理、es 分布式架构原理、redis 线程模型原理、Dubbo 工作原理),生产环境里可能会碰到的一些问题(每种技术引入之后生产环境都可能会碰到一些问题),系统设计(设计 MQ,设计搜索引擎,设计一个缓存,设计 rpc 框架)
MQ、ES、Redis、Dubbo,上来先问你一些
**思考性的问题**
、
**原理**
,比如 kafka 高可用架构原理、es 分布式架构原理、redis 线程模型原理、Dubbo 工作原理;之后就是生产环境里可能会碰到的一些问题,因为每种技术引入之后生产环境都可能会碰到一些问题;再来点综合的,就是系统设计,比如让你设计一个 MQ、设计一个搜索引擎、设计一个缓存、设计一个 rpc 框架等等。
那既然开始聊分布式系统了,自然重点先聊聊 dubbo 了,毕竟 dubbo 是目前事实上大部分公司的分布式系统的 rpc 框架标准,基于 dubbo 也可以构建一整套的微服务架构。但是需要自己大量开发。
...
...
docs/distributed-system/dubbo-service-management.md
浏览文件 @
0233b586
...
...
@@ -8,7 +8,7 @@
**失败重试**
,分布式系统中网络请求如此频繁,要是因为网络问题不小心失败了一次,是不是要重试?
**超时重试**
,
同上
,如果不小心网络慢一点,超时了,如何重试?
**超时重试**
,
跟上面一样
,如果不小心网络慢一点,超时了,如何重试?
## 面试题剖析
### 服务治理
...
...
@@ -40,17 +40,13 @@
```
java
public
interface
HelloService
{
void
sayHello
();
}
public
class
HelloServiceImpl
implements
HelloService
{
public
void
sayHello
()
{
System
.
out
.
println
(
"hello world......"
);
}
}
```
...
...
@@ -91,7 +87,6 @@ public class HelloServiceImpl implements HelloService {
mock 的值也可以修改为 true,然后再跟接口同一个路径下实现一个 Mock 类,命名规则是 “接口名称+
`Mock`
” 后缀。然后在 Mock 类里实现自己的降级逻辑。
```
java
public
class
HelloServiceMock
implements
HelloService
{
public
void
sayHello
()
{
// 降级逻辑
}
...
...
docs/distributed-system/dubbo-spi.md
浏览文件 @
0233b586
...
...
@@ -12,7 +12,7 @@ spi,简单来说,就是 `service provider interface`,说白了是什么意
举个栗子。
你有一个接口
A。A1/A2/A3 分别是接口A的不同实现。你通过配置
`接口A=实现A2`
,那么在系统实际运行的时候,会加载你的配置,用实现A2
实例化一个对象来提供服务。
你有一个接口
A。A1/A2/A3 分别是接口A的不同实现。你通过配置
`接口 A = 实现 A2`
,那么在系统实际运行的时候,会加载你的配置,用实现 A2
实例化一个对象来提供服务。
spi 机制一般用在哪儿?
**插件扩展的场景**
,比如说你开发了一个给别人使用的开源框架,如果你想让别人自己写个插件,插到你的开源框架里面,从而扩展某个功能,这个时候 spi 思想就用上了。
...
...
docs/high-concurrency/redis-single-thread-model.md
浏览文件 @
0233b586
...
...
@@ -23,6 +23,7 @@ redis 相比 memcached 来说,拥有[更多的数据结构](/docs/high-concurr
redis 内部使用文件事件处理器
`file event handler`
,这个文件事件处理器是单线程的,所以 redis 才叫做单线程的模型。它采用 IO 多路复用机制同时监听多个 socket,将产生事件的 socket 压入内存队列中,事件分派器根据 socket 上的事件类型来选择对应的事件处理器进行处理。
文件事件处理器的结构包含 4 个部分:
-
多个 socket
-
IO 多路复用程序
-
文件事件分派器
...
...
docs/high-concurrency/why-cache.md
浏览文件 @
0233b586
...
...
@@ -36,4 +36,4 @@ mysql 这么重的数据库,压根儿设计不是让你玩儿高并发的,
-
[
缓存雪崩、缓存穿透
](
/docs/high-concurrency/redis-caching-avalanche-and-caching-penetration.md
)
-
[
缓存并发竞争
](
/docs/high-concurrency/redis-cas.md
)
后面再详细说明。
后面再详细说明。
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录