
java微服务与分布式
微服务分布式
佐杰
这个作者很懒,什么都没留下…
展开
-
数据库与缓存⼀致性⽅案
⾸先我们对于所有的DB操作都不去添加具体的删除缓存的操作,⽽是通过canal监听binlog的⽅式,待数据确认已提交到数据库后,通过监听的变化,解析出对应的数据后,过滤掉⾮增删改的binlog,然后通过常量类配置的需要处理数据⼀致性的相关表以及关键字段和缓存前缀key,进⾏组装出需要进⾏删除的缓存key。现有的业务场景下,都会涉及到数据库以及缓存双写的问题,⽆论是先删除缓存,再更新数据,或者先更新数据,再删除缓存,都⽆法保证数据的⼀致性。本身他们就不是⼀个数据源,⽆法通过代码上的谁先谁后去保证顺序。原创 2024-06-01 22:15:43 · 943 阅读 · 0 评论 -
微服务实战之C2C电商社会化治理平台痛点介绍
简介二手电商平台,用户是买家也是卖家,但是会有一个问题,卖家会上传违规商品(eg:侵犯版权的盗版商品,假冒伪劣商品,违法的商品),买家和卖家进行留言互动(通过IM系统进行私聊,对商品进行评论) 可能会进行一些人身攻击之类的违法行为。所以这个电商平台,从卖家到买家都是用户,那怎么进行社会化治理。如果平台方建立规模庞大的审核团队,那么可能导致每一件商品以及发表的评论都需要经过预评审。预评审通过了,平台才会给你显示出来,但是面对日活用户达到数百万,甚至上千万,每天发表的评论都多达上千万,如果全部由自建的预审团原创 2020-11-25 22:08:07 · 276 阅读 · 1 评论 -
springcloud config :Authentication is required but no CredentialsProvider has been registered
在注册中心配置git 仓库地址,那么我们需要配置git 用户名密码进行安全链接:spring: application: name: config-server cloud: config: name: config-server server: git: uri: https://github.com/allencailong/config-server.git force-pull: true原创 2020-11-18 23:47:07 · 1379 阅读 · 0 评论 -
SpringBoot(五)SpringBoot全局捕获异常
@RequestMapping(value = "test") public int test(){ int reslut=1/0; return reslut; }package com.zuojie.Controller;import org.springframework.w...原创 2019-06-03 00:26:32 · 220 阅读 · 0 评论 -
spring boot+mvc中常用的一些全局配置
WebMvcConfigurerpublic class MvcConfigurer implements WebMvcConfigurer(){// 拦截器 public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new UserLoginInterceptor()).addPathPatterns("/user/**"); } // 跨域访问配置原创 2020-11-01 21:10:15 · 145 阅读 · 0 评论 -
微服务网关
网关网关的核心功能网关的几种技术选型网关的核心功能1)动态路由,新开发某个服务,动态把请求路径和服务的映射关系加载到网关里去,服务增减机器 网关自动热感应2)灰度发布3)鉴权认证4)性能监控,每个app接口的耗时,成功率,qps5) 系统日志6)数据缓存7)限流熔断网关的几种技术选型kong,Zuul ,Nginx+Lua(OpenRestry) ,自研网关kong: nginx 里面的一个基于lua写的模块,实现了网关的功能Zuul: Springcloud 微服务架构 zuul原创 2020-06-07 17:21:11 · 187 阅读 · 0 评论 -
dubbo支持那些网络协议和序列化协议
dubbo支持那些网络协议和序列化协议dubbo 协议特点:单一的长链接 nio异步通信 基于hession 作为序列化协议使用场景:传输数据量小,并发高rmi 协议特点:走java二进制序列化,多个短链接使用场景:适合消费者和提供者数量差不多,适用于文件传输,一般较少用hessian 协议特点:走hessian序列化协议,多个短链接使用场景:适合消费者和提供者数量差不多,适用于文件传输,一般较少用http 协议特点:走json序列化webservice 协议走soap文本序列化原创 2020-08-13 20:22:49 · 236 阅读 · 0 评论 -
网关的核心功能
1.动态路由:新开发某个服务,动态把请求路径和服务的映射关系热加载到网关里。2.灰度发布3.鉴权认证4.性能监控:每个api的接口耗时,成功率,qps5.系统日志6.数据缓存7.限流熔断原创 2020-12-31 10:13:08 · 677 阅读 · 0 评论 -
为什么要使用复杂的微服务架构?
多人维护一个单块应用,频繁进行代码合并,解决冲突;导致开发效率低下每次上线都要和最新代码合并,重新进行全量回归测试,很多代码都可能已经变动,必须进行全量回归测试 耗费时间很多,开发效率低下多人频繁上线, 你等我,我等你,互相协调麻烦,开发效率低假如测试服务器少,就一台测试服务器,测试也只能排队,一个一个测试,也很消耗时间10个人以内维护一个单块应用,基本这些成本不算太大,但是一旦10人以上维护一个单块应用,成本就会变的极大, 导致系统每个需求的测试和上线,都非常缓慢,要消耗大量时间做全量回归测试,.原创 2020-11-25 10:54:58 · 129 阅读 · 0 评论 -
SpringBoot(六)SpringBoot集成freemarker
第一步引入相应的依赖<!-- 引入freeMarker的依赖包. --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId></dependen...原创 2019-06-08 23:56:03 · 273 阅读 · 0 评论 -
Spring Security(一)什么是Spring Security
这里需要阐述一下的是,每一个框架的出现都是为了解决某一问题而产生了,那么Spring Security框架的出现是为了解决什么问题呢?首先我们看下它的官网介绍:Spring Security官网地址Spring Security is a powerful and highly customizable authentication and access-control framework...原创 2019-04-11 23:18:12 · 1719 阅读 · 0 评论 -
SpringBoot(七)SpringBoot集成jsp
第一步在pom文件引入相应的依赖<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.3.RELEASE</version&g...原创 2019-06-09 13:17:01 · 201 阅读 · 0 评论 -
Springcloud netflix和Springcloud alibaba组件对应
1.注册中心 eureka—-nacos2.rpc框架 feign+ribbon—— dubbo3.分布式事务 无 ———seata4.限流/熔断/降级 hystrix———sentinel5.api 网关 zuul—-无原创 2020-11-25 14:54:29 · 1712 阅读 · 1 评论 -
你们系统每天有多大访问量?每个服务高峰QPS多少?压测过服务最大QPS吗?
在自己负责的系统里 核心模块 开发一个简单的metrics统计机制,AtomicLong,,原子性,并发下数据统计准确,每个接口被调用的时候,可以对每个接口做一个metrics统计。任何一个开源系统 都需要对自己运行过程中各种请求量,每秒的请求量、成功次数、失败次数,在内存里做一个计数,他会给你开放一些端口号,只要请求这些端口号,就会把metrics统计返回。对每个接口 每天的请求使用atomicLong做一个计数,统计每天的请求次数。原创 2024-06-01 18:58:22 · 315 阅读 · 0 评论 -
no main manifest attribute, in haochen.jar解决方案
问题现场出现原因jar包的相关依赖文件 没一起打包解决方案<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId>原创 2021-08-15 12:53:43 · 478 阅读 · 0 评论 -
Spring Cloud Config vs Apollo
原创 2020-12-06 22:42:22 · 234 阅读 · 0 评论 -
微服务实战之C2C电商社会化治理平台的解决方案
解决方案核心思路:开发一个系统,对很多非法的举报进行社会化治理,所谓社会化治理,就是把每隔举报都圈定一部分用户作为评审员,让他们进行投票,如果过半数则举报成立,同时为了激励用户参与进来,可以给他们一些奖励,可以奖励一些虚拟货币,后续可以在专门积分商城兑换一些奖品举报的场景有人挂出的商品是违法的商品,可能被举报评论的言论 不当 可能被举报等等…...原创 2020-11-25 22:19:26 · 225 阅读 · 0 评论 -
SpringBoot(二)创建第一个SpringBoot
创建第一个SpringBoot1.创建一个普通的maven项目2.在pom文件导入相应的maven依赖<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <...原创 2019-06-02 23:27:47 · 176 阅读 · 0 评论 -
SpringCloudalibaba 踩坑记之java.lang.IllegalArgumentException: no server available
前言2020-04-25 11:04:11.304 ERROR 893 --- [TaskScheduler-1] o.s.c.a.nacos.discovery.NacosWatch : Error watching Nacos Service changejava.lang.IllegalArgumentException: no server available at com.alibaba.nacos.client.naming.net.NamingProxy.reqAPI(原创 2020-06-17 16:09:25 · 1706 阅读 · 0 评论 -
商品画像服务
原创 2020-09-23 18:00:39 · 372 阅读 · 0 评论 -
springcloud之启动eureka踩坑解决方案
java.lang.IllegalStateException: Could not evaluate condition on org.springframework.cloud.client.loadbalancer.AsyncLoadBalancerAutoConfiguration$AsyncRestTemplateCustomizerConfig due to org/springfr...原创 2019-09-08 15:46:13 · 2578 阅读 · 0 评论 -
SpringBoot(八)SpringBoot集成jdbc
项目结构如下第一步在pom中引入相应的jar包<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.RELEASE</...原创 2019-06-09 23:57:35 · 185 阅读 · 0 评论 -
SpringBoot(三)SpringBoot两种启动方式
SpringBoot两种启动方式第一种启动方式在控制器中通过@EnableAutoConfiguration注解进行启动package com.zuojie.Controller;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.EnableAut...原创 2019-06-02 23:51:57 · 496 阅读 · 0 评论 -
微服务之战之zooKeeper Eureka consul nacos的选型对比
1.zookeeper:leader+follower 采用cp2.eureka: peer-to-peer 异步复制 采用ap3.consul: 采用cp4.nacos既可以使用cp也可以使用ap原创 2020-11-30 19:52:25 · 566 阅读 · 0 评论 -
使用docker部署springboot项目
1.将springboot项目打包2.制作dockerfile文件2.1继承JDK环境2.2将本地的jar包拷贝到容器中2.3 java -jar3.将dockerfile文件打包成镜像文件4.运行镜像文件原创 2021-08-15 13:22:24 · 252 阅读 · 0 评论 -
配置springCloud犯了个特别低级的错误
问题如下FreeMarker template error (DEBUG mode; use RETHROW in production!): The following has evaluated to null or missing: ==> replica.key [in template "eureka/navbar.ftlh" at line 68, column 62] ---- Tip: It's the step after the last dot that caused this原创 2020-08-23 13:53:07 · 854 阅读 · 0 评论 -
Nacos架构原理
原创 2020-11-30 22:50:13 · 777 阅读 · 0 评论 -
微服务踩坑记之Zuul注册到Eureka
问题如下:Request execution errorcom.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused (Connection refused)at com.sun.jersey.client.apache4.ApacheHttpClient4Han...原创 2019-09-06 23:25:23 · 3031 阅读 · 0 评论 -
微服务实战之C2C电商社会化治理平台整体架构设计
原创 2020-11-30 12:40:29 · 361 阅读 · 0 评论 -
Eureka自我保护机制
Eureka自我保护机制Eureka自我保护机制的实现逻辑心跳失败的比例是在15分钟之内,低于85%的节点,eureka server会认为这个实例出现了网络故障。直接剔除这个有问题的服务。减少网络抖动或网络不稳定的情况下,避免误删除。eureka server不会剔除因为长时间没有收到心跳数据的过期服务eureka server 依旧可以接收新的服务的注册和查询。Eureka自我保护机制的实现逻辑protected volatile int numberOfRenewsPerMinThre原创 2020-11-23 23:49:17 · 235 阅读 · 1 评论 -
手写简易版的spring-boot-starter
手写简易版的spring-boot-starter第一步引入相应的jar包第二步写相应的代码第三步配置spring.factories第四步 install jar包第五步进行验证第一步引入相应的jar包<!--引入springboot的parant包--><parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-s原创 2021-02-22 21:20:23 · 168 阅读 · 0 评论 -
SpringBoot(九)SpringBoot集成mybatis
SpringBoot集成mybatis项目的结构如下第一步在pom文件引入相应的jar包第二步引入对应的配置文件application.properties第三步实体类的编写(这里可以引入lombok可以省掉很多代码)第四步编写mapper(这里需要注意mybatis对sql的格式审查的比较严字段不能省略)第五步编写controller第六步编写启动类(这里需要注意@ComponentScan和@...原创 2019-06-11 21:57:28 · 257 阅读 · 0 评论 -
building and deploying a single-Master RocketMQ cluster
【代码】building and deploying a single-Master RocketMQ cluster。原创 2023-08-28 15:49:57 · 235 阅读 · 0 评论 -
网关压测对比
况下压测的结果变化,压测结果有可⽐性;同时输出dstat -v。Nginx、SpringCloud Gateway 压测对比。每个场景都输出⼀个基本压测结果,然后在输出不同参数配置情。系统指标情况,查看JVM GC情况进⾏调优。原创 2024-05-19 22:54:41 · 410 阅读 · 0 评论 -
springBoot服务在idea中启动多次
springBoot服务在idea中启动多次步骤如下选择allow parallel run 允许并行运行原创 2019-09-09 21:57:49 · 941 阅读 · 0 评论 -
SpringBoot(四)SpringBoot静态图片访问
SpringBoot静态图片访问在我们开发Web应用的时候,需要引用大量的js、css、图片等静态资源。默认配置Spring Boot默认提供静态资源目录位置需置于classpath下,目录名需符合如下规则:/static/public/resources/META-INF/resources举例:我们可以在src/main/resources/目录下创建static,在该位置放置...原创 2019-06-03 00:07:24 · 2848 阅读 · 0 评论 -
分布式通信协议之http
分布式通信协议之httphttp协议的概述缓存httpshttps的工作原理第一步加密第二步 密钥是公开了所有的客户端都可以拿到第三步针对不同的客户端使用不同的密钥第四步 使用非对称加密第五步:公钥被调包的问题永远存在第六步使用第三方机构来解决http协议的概述客户端和服务器端1.资源html/文本、word、avi电影、其他资源2.媒体类型MIME类型、text/html、ima...原创 2019-07-15 20:23:48 · 300 阅读 · 0 评论 -
Nginx学习(一)
nginx学习(一)1.关于正向代理和反向代理2.常用的web服务器介绍3.Nginx,Apache,tomcat之间的联系4.Ngnix的安装5.nginx核心配置文件6.虚拟主机的配置1.关于正向代理和反向代理正向代理:代理对象是客户端反向代理:代理对象是服务端2.常用的web服务器介绍apache、Ngnix 、tomcat 、wblogic 、jboss 、webphere...原创 2019-07-10 19:12:15 · 158 阅读 · 0 评论 -
Nginx学习(二)
Nginx学习二Rewrite的使用缓存配置及Gzip配置Nginx反向代理实战负载均衡配置说明Nginx的进程模型Nginx的产线配置Nginx+keepalived实现高可用Rewrite的使用支持url 重写;if判断、return作用范围:server/location/if中 只能对域名后面的除去参数外的字符串起作用if(条件){}=号或者~;return 指令return...原创 2019-07-11 19:35:46 · 183 阅读 · 0 评论 -
为什么要使用消息队列?
为什么要使用消息队列?未使用消息队列前的场景使用消息队列的好处不用MQ的同步高延时请求场景使用MQ进行异步化之后的接口性能优化没有用MQ的时候高峰期系统被打死的情景使用MQ进行削峰的场景架构中引入MQ后可能存在的一些问题未使用消息队列前的场景使用消息队列的好处不用MQ的同步高延时请求场景使用MQ进行异步化之后的接口性能优化没有用MQ的时候高峰期系统被打死的情景使用MQ进行削峰...原创 2019-08-11 00:00:09 · 239 阅读 · 0 评论