分布式基础
(36人评价)
谷粒商城--微服务分布式电商项目

谷粒商城--微服务分布式电商项目

价格 免费

docker update redis --restart=always

[展开全文]

SmsSendController

/sms

 

 

提供给别的服务调用

phon code

 

验证码再次校验

引入redisssion

配置yml

StringRedisTemplete

 SMS _CODE_CACHE_PREFIX=sms:code

 

 

[展开全文]

细节:

1)命名空间:配置隔离

 

2)配置集

3)配置集ID

4)配置分组

[展开全文]

config添加MyTHreadConfig ThreadPoolExe

20 200 10TimeUnit.SeC

New Linked 100000

Execto defallT

new Th abortPo

 

[展开全文]

加属性clicked 去掉其他人的class=checked

 

 

[展开全文]

改sql gaigai

回显  :

th:attr="skus=${vals.skuIds},class=${#lists.contains(#strings.listSplit(vals.skus,","),item.info.skuId)?' ':'sku_attr_value'}"

 

 

 

class=sku_attr_value 绑定单击事件 

//1获取到当前的skus组合

//2.获取到另外一个选中的skus组合

//3、

 

[展开全文]

关注问题:

  1. 接口幂等性,保证所有接口请求得到的结果都是一致的
  2. 分布式事务,保证各个服务间存储数据的最终一致性(柔性事务的一致性),可用RabbitMQ解决
  3. 压力测试,jemiter进行压力测试,监控性能
  4. 使用缓存(redis+springCache)带来的问题,缓存击穿、缓存雪崩、缓存null值。用分布式锁解决以上问题(还可以解决并发性接口幂等性、上下架商品的并发性问题)
  5. 数据查询的性能问题,elasticsearch提高查询性能
  6. 异步无序问题,使用异步编排comparetablefuture
  7. 分布式session共享问题,使用springSession,亦可作单点登录
  8. 秒杀流量崩溃问题,用RabbitMQ流量削峰
  9. 分布式下配置文件的管理问题,使用nacos作为配置中心
  10. 服务间调用时遇到down机的问题,使用Alibaba-Sentinel(哨兵)服务熔断降级机制返回降级数据,避免级联影响,为了快速定位异常通常还使用Sleuth+Zipkin服务链路追踪
[展开全文]

安装kibana:

docker run --name kibana -e ELASTICSEARCH_HOSTS=http://*.*.*.*:9200 -p 5601:5601 -d kibana:7.4.2

[展开全文]

安装ES

  1. docker pull elasticsearch:7.4.2
  2. docker pull kibana:7.4.2
  3. mkdir -p /docker/elasticsearch/config
  4. mkdir -p /docker/elasticsearch/data
  5. echo "http.host: 0.0.0.0">>/docker/elasticsearch/config/elasticsearch.yml(允许外部任意IP访问,注意IP有空格)
  6. docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx128m" -v /docker/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /docker/elasticsearch/data:/usr/share/elasticsearch/data -v /docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins -d elasticsearch:7.4.2(9200:请求端口;9300:分布式集群节点通信端口;单节点运行;设定初始和最大内存)

free -m查看linux内存

[展开全文]

apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: tiller
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: tiller
    namespace: kube-system
 

[展开全文]

docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.154.102:9200 -p 5601:5601 -d kibana:7.4.2

[展开全文]

@Cacheable  中有一个本地锁的开启属性。开启的时候可以解决缓存击穿问题,默认是不开启的。

读多写少的,即时性,数据一致性要求不高的,完全可以使用Spirng-Cache

 

Spring-Cache   通过配置已经

可以解决缓存击穿问题   大量并发进来查询一个正好过期的key。解决,开启@Cacheable的加锁属性:sync = true

缓存穿透问题:解决方法: 开启缓存空数据。

还有缓存雪崩(大量的key同时过期),解决加随机过期时间。

[展开全文]

 

 

@CacheEvict  对应的是 缓存的失效模式:该注解和@Cacheable不同的是,该注解用在修改的方法上,如果调用该方法,则删除对应的缓存。可以根据缓存分区删除,也可以根据缓存和key删除缓存。

 

 

@CachePut  对饮的是缓存的双写模式,该注解用在修改更新的方法【该方法需要有用于存储于缓存的返回值】上,如果调用了该方法,则删除旧值,然后把返回值放入对应的缓存中。

@Caching  组合注解:同时操作多个缓存

 

[展开全文]

不管是redis还是其他缓存,如果想要改变缓存配置在容器中加一个与其对应的缓存配置就好了。

在创建这个缓存配置实例的方法中,设置想要配置的参数,比如说超时时间,存储的格式类型,缓存的前缀。还有是否缓存控制的开启与否【用来防止缓存穿透问题,一般开启】,结合配置文件中的缓存配置,读入到缓存配置实例中就好。

[展开全文]

@Cacheable    可以设置的参数:

缓存的名字: value 相当于缓存的分区,比如商品区,菜单区都可以根据业务设定一个分区。

key     接收的是Spel表达式,设置的是动态的值,设置的时候要根据spring官方的spel表达式的语法设置,如果要设置固定的值,字符串,要用单引号包括着,否则会被识别为表达式,可能就会报错。

可以在配置文件中指定ttl也就是缓存的存活时间。不指定默认不失效。

[展开全文]

@caheable   作用在方法上,代表当前方法的结果需要缓存,如果缓存中有,方法不用调用,如果缓存中没有,会调用方法,将方法的返回结果放入缓存中。

 

[展开全文]

索引:->mysql中的数据库或者 ; 倒排索引

类型:->mysql数据库中的表

文档:->mysql 中的一行数据 ; 数据以 json形式保存

[展开全文]

Redisson的所有方法,底层都是lua脚本,保证了原子性, 看门狗机制,解决了死锁问题。

锁的名字, 就是getlock 方法传递的参数。

锁的粒度, 越细越快。比如每个商品编号占用一把锁,就比商品类别都占用同一把锁要快。

缓存数据一致性问题, 就是保证和数据库的数据的一致性问题。

解决方法1:双写模式: 写完数据库,同时就把缓存中的数据更新一下。大并发下,会产生脏数据。 这个时候就需要加锁。互斥。

解决方法2:失效模式: 更新数据的时候就把缓存中的数据删除, 下次查的时候,没有就在数据库中查,查完后放入redis中。

 

[展开全文]
业界大牛亲自授课
前沿技术实时更新
足不出户学编程
关注尚硅谷微信 一键下载全部视频教程

关注尚硅谷微信

一键下载全部视频教程