个人随笔:消息中间件
前言
微服务一旦拆分,必然涉及到服务之间的相互调用,目前我们服务之间调用采用的都是基于OpenFeign的调用。这种调用中,调用者发起请求后需要等待服务提供者执行业务返回结果后,才能继续执行后面的业务。也就是说调用者在调用过程中处于阻塞状态,因此我们成这种调用方式为同步调用,也可以叫同步通讯。但在很多场景下,我们可能需要采用异步通讯的方式,为什么呢?
我们先来看看什么是同步通讯和异步通讯。如图:
解读:
同步通讯:就如同打视频电话,双方的交互都是实时的。因此同一时刻你只能跟一个人打视频电话。
异步通讯:就如同发微信聊天,双方的交互不是实时的,你不需要立刻给对方回应。因此你可以多线操作,同时跟多人聊天。
两种方式各有优劣,打电话可以立即得到响应,但是你却不能跟多个人同时通话。发微信可以同时与多个人收发微信,但是往往响应会有延迟。
所以,如果我们的业务需要实时得到服务提供方的响应,则应该选择同步通讯(同步调用)。而如果我们追求更高的效率,并且不需要实时响应,则应该选择异步通讯(异步调用)。
同步调用的方式我们已经学过了,之前的OpenFeign调用就是。但是:
异步调用又该如何实现 ...
前端实验五 :用户注册验证的设计与实现
注册页面
.error {
color: red;
font-size: 12px;
}
注册
已有帐号,前往登录
其他方式
了解更多
前端练习六 :选择一个jQuery插件制作demo
#myzoom {
width: 400px;
height: 400px;
float: left;
}
$(function () {
$("#myzoom").hc_zoom()();
});
个人随笔:了解Seata
前言
在讲解Seata前我们先来介绍一下微服务的分布式
在微服务开发过程中分布式事务一直是一个比较重要的问题,之前对于分布式事务的解决方法一般会通过MQ的最终一致性来解决,尤其是RocketMQ的事务消息。今天主要介绍一下一款阿里推出的分布式事务中间件——Seata。
一、分布式理解
1、理解CAP
cap定理(分布式系统的三个指标):
Consistency(一致性):用户访问分布式系统中的任意节点,得到的数据必须一致。
Avallabiry(可用性):用户访问集群中的任意健康节点,必须能得到响应,而不是超时或拒绝。
Partition tolerance(分区容错性):
分区:因为网络故障或其他原因导致分布式系统中的部分节点与其他节点失去连接,形成独立分区。
容错:在集群出现分区时,整个系统也要持续对外提供服务。
分布式系统无法同时满足这三个指标,这个结论叫做CAP定理。
2、BASE理论
BASE理论是对CAP的一种解决思路,包含三个思想:
Basically Available(基本可用):分布式系统在出现故障时,允许损失部分的可用性,即保证核心可用。
S ...
前端练习五 :使用jQuery制作游戏角色
body, html {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
overflow: hidden;
background-color: black;
}
#player {
position: absolute;
top: 0;
left: 0;
}
$(document).ready(function(){
$(document).click(function(event){
$("#player").stop().animate({top: event.pageY, left: event.pageX}, 1000);
});
});
个人随笔:数据库ACID四大特性
ACID
前端练习四 :使用jQuery修改表格
练习4
body {
font-size: 13px;
line-height: 25px;
}
table {
border-top: 1px solid #333;
border-left: 1px solid #333;
width: 300px;
}
td {
border-right: 1px solid #333;
border-bottom: 1px solid #333;
}
.center {
text-align: center;
}
书名
价格
看得见风景的房间
¥30.00
60个瞬间
...
前端实验四 :Web广告
广告弹窗实验
body {
margin: 0;
padding: 0;
}
.web {
width: 1000px;
height: 1500px;
background-color: #CCCCCC;
border: #666666 1px solid;
margin: 0 auto;
}
/*对联广告样式*/
#ad1 {
position: fixed;
top: 50px;
width: 120px;
height: 240px;
background-image: url("img/left.png");
background-size ...
前端练习三 :用键盘操纵坦克移动
input {
font-size: 26px;
margin-top: 20px;
}
body {
background-image: url(img/grassland.png);
margin: 0;
}
#my_tank {
z-index: -1;
position: absolute;
left: 10px;
top: 100px;
transition: transform 0.5s; /* 添加过渡效果 */
}
.bullet {
position: absolute;
width: 10px;
height: 10px;
border-r ...
前端练习二 :使用DOM操纵图片
练习2
html, div, ul, li {
margin: 0px;
padding: 0px;
}
a {
cursor: pointer;
}
li {
list-style: none;
cursor: pointer;
}
fieldset {
border: #000 1px dashed;
width: 200px;
height: 200px;
padding: 10px;
text-align: center;
float: left;
margin-left: 5px;
}
#cont_left {
width ...