当前位置: 首页 > news >正文

自己做的网站怎么做二维码杭州app开发公司老铁帮

自己做的网站怎么做二维码,杭州app开发公司老铁帮,网站开发技术负责那些,网站建设的市场规模1.SOA、分布式、微服务之间有什么关系和区别#xff1f; 分布式架构是指将单体架构中的各个部分拆分#xff0c;然后部署不同的机器或进程中去#xff0c;SOA和微服务基 本上都是分布式架构的SOA是⼀种⾯向服务的架构#xff0c;系统的所有服务都注册在总线上#xff0c;…1.SOA、分布式、微服务之间有什么关系和区别 分布式架构是指将单体架构中的各个部分拆分然后部署不同的机器或进程中去SOA和微服务基 本上都是分布式架构的SOA是⼀种⾯向服务的架构系统的所有服务都注册在总线上当调⽤服务时从总线上查找服务 信息然后调⽤微服务是⼀种更彻底的⾯向服务的架构将系统中各个功能个体抽成⼀个个⼩的应⽤程序基本保 持⼀个应⽤对应的⼀个服务的架构 2.怎么拆分微服务 拆分微服务的时候为了尽量保证微服务的稳定会有⼀些基本的准则 微服务之间尽量不要有业务交叉。微服务之前只能通过接⼝进⾏服务调⽤⽽不能绕过接⼝直接访问对⽅的数据。⾼内聚低耦合 3.Eureka 3.1 什么是服务注册和服务发现 以Eureka为例 服务注册服务提供者需要把自己的信息注册到Eureka,Eureka来保存这些信息服务名称ip,端口号等。 服务发现消费者向Eureka拉取服务列表如果服务者是集群则消费者会利用负载均衡算法选择一个。 3.2 启动流程 Eureka客户端以下简称客户端启动后定时向Eureka服务端以下简称服务端注册自己的服务信息服务名、IP、端口等。这就是服务注册。客户端启动后根据名称定时拉取服务端保存注册信息。这就是服务发现或服务拉取。之后消费者就可以远程调用提供者。 3.3 消费者如何感知提供者健康状态 提供者每隔30秒向注册中心发起请求报告自己的健康状态——称为心跳。Eureka会更新服务列表信息注册信息如果Eureka90秒没有接收到心跳会被剔除消费者就可以拉取到新的信息 3.4 如何搭建注册中心 引用服务端依赖服务启动类上添加EnableEurekaServer注解在application.yml编写配置 server:port: 10086 spring:application:name: eureka-server eureka:client:service-url: defaultZone: http://127.0.0.1:10086/eureka3.5如何完成服务注册和服务发现 引入客户端依赖编写配置文件 服务发现也需要知道eureka地址因此与服务注册一致都是配置eureka信息 spring:application:name: orderservice eureka:client:service-url:defaultZone: http://127.0.0.1:10086/eureka3.6 为什么我们只输入了service名称就可以访问了呢之前还要获取ip和端口。 LoadBalancerInterceptor里面有个interceptor方法该方法对RestTemplate的请求进行拦截获取请求的url找到主机名(就是服务id)然后从Eureka根据名称获取服务列表随后利用负载均衡算法得到真实的服务地址信息替换服务id。 3.7 负载均衡算法有哪些 轮询法将请求按顺序轮流地分配到后端服务器上它均衡地对待后端的每⼀台服务器而不关⼼服务器实际的连接数和当前的系统负载。随机法随机选择一个可用的服务器。加权轮询法为每一个服务器赋予一个权重值。服务器响应时间越长这个服务器的权重就越小。这个规则会随机选择服务器这个权重值会影响服务器的选择。加权随机法与加权轮询法⼀样加权随机法也根据后端机器的配置系统的负载分配不同的权重。不同的是它是按照权重随机请求后端服务器而非顺序。最小连接数法最⼩连接数算法比较灵活和智能由于后端服务器的配置不尽相同对于请求的处理有快有慢它是根据后端服务器当前的连接情况动态地选取其中当前积压连接数最少的⼀台服务器来处理当前的请求尽可能地提⾼后端服务的利⽤效率将负责合理地分流到每⼀台服务器.区域敏感策略ZoneAvoidanceRule(默认):以区域可用的服务器为基础进行服务器的选择。使用Zone对服务器进行分类这个Zone可以理解为一个机房、一个机架等。而后再对Zone内的多个服务做轮询。 3.8 负载均衡如何实现 主要使用Ribbon,比如使用Feign远程调用时底层的负载均衡使用的就是Ribbon 3.9 自定义负载均衡策略 方法一全局通过定义IRule实现可以修改负载均衡规则交给Spring容器管理 Bean public IRule randomRule(){return new RandomRule(); }方法二局部通过配置文件 userservice: # 给某个微服务配置负载均衡规则这里是userservice服务名ribbon:NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则 3.10 Ribbon负载均衡流程 3.11 饥饿加载和懒加载 Ribbon默认是采用懒加载即第一次访问时才会去创建LoadBalanceClient请求时间会很长。 饥饿加载会在项目启动时创建降低第一次访问的耗时通过下面配置开启饥饿加载 ribbon:eager-load:enabled: trueclients: userservice4.Nacos 4.1 什么是Nacos Nacos是阿里巴巴开源的一个微服务组件它有配置管理服务发现动态的DNS服务和服务管理平台 1配置管理支持配置统一管理配置自动更新等 2服务发现支持DNS和RPC的服务发现同时进行监控检查。 3动态DNS服务支持路由权重更容易实现负载均衡、更灵活的路由策略、流量监控等 4服务管理 4.2 nacos如何完成服务注册 引依赖配地址 spring:cloud:nacos:server-addr: localhost:88484.3 Eureka和Nacos区别 共同点 都支持服务注册服务拉取都支持服务提供者心跳方式做健康检测 区别Nacos支持服务端主动监测提供者状态临时实例提供心跳模式非临时实例采用主动检测模式。临时实例心跳不正常会被剔除非临时实例不会被剔除Nacos支持服务列表变更的消息推送服务列表发生变更主动告知消费者服务列表更新更及时Nacos集群默认采用AP方式当集群存在非临时实例时采用CP模式Eureka采用AP方式Nacos支持配置中心Eureka只有注册中心。 4.4 Nacos和Eureka结构 4.5 如何添加DataId配置 在配置文件中添加环境 spring:profiles:active: dev在Nacos控制台新建配置: 1DataId: 服务名称-环境dev.文件后缀yml 2选择配置格式 3配置内容后端获取Value(“${xxx.xxx}”) 如果类上使用RefreshScope可以实现热更新 4.6 环境隔离 Namespace来做环境隔离 每个namespace都有唯一的id 不同namespace下服务不可见 5.feign如何使用 引依赖在需要远程调用的启动类上加EnableFeignClients注解创建接口并添加FeignClient“服务名称” FeignClient(userservice) public interface UserClient {GetMapping(/user/{id})User findById(PathVariable(id) Long id); }将接口注入到要使用的地方调用接口里面的抽象方法 6.GateWay 6.1 网关的核心功能 路由和负载均衡一切请求都必须先经过gateway但网关不处理业务而是根据某种规则把请求转发到某个微服务这个过程叫做路由。当然路由的目标服务有多个时还需要做负载均衡。权限控制网关作为微服务入口需要校验用户是是否有请求资格如果没有则进行拦截。限流当请求流量过高时在网关中按照下流的微服务能够接受的速度来放行请求避免服务压力过大。 6.2 项目中如何使用 引入网关和Nacos服务注册相关依赖在配置文件中 编写基础配置和路由规则 server:port: 10010 # 网关端口 spring:application:name: gateway # 服务名称cloud:nacos:server-addr: localhost:8848 # nacos地址gateway:routes: # 网关路由配置- id: user-service # 路由id自定义只要唯一即可# uri: http://127.0.0.1:8081 # 路由的目标地址 http就是固定地址uri: lb://userservice # 路由的目标地址 lb就是负载均衡后面跟服务名称predicates: # 路由断言也就是判断请求是否符合路由规则的条件- Path/user/** # 这个是按照路径匹配只要以/user/开头就符合要求路由配置包括 路由id路由的唯一标示路由目标uri路由的目标地址http代表固定地址lb代表根据服务名负载均衡路由断言predicates判断路由的规则路由过滤器filters对请求或响应做处理 6.3 过滤器工厂 GatewayFilter是网关中提供的一种过滤器可以对进入网关的请求和微服务返回的响应做处理 6.4路由过滤器种类部分 名称说明AddRequestHeader给当前请求添加一个请求头RemoveRequestHeader移除请求中的一个请求头AddResponseHeader给响应结果中添加一个响应头RemoveResponseHeader从响应结果中移除有一个响应头RequestRateLimiter限制请求的流量 如何使用只需要修改gateway服务的application.yml文件添加路由过滤即可 spring:cloud:gateway:routes:- id: user-service uri: lb://userservice predicates: - Path/user/** filters: # 过滤器- AddRequestHeaderTruth, Itcast is freaking awesome! # 添加请求头6.5 什么事跨域 跨域域名不一致就是跨域 主要包括域名不同和域名相同但端口不通 如何解决编写gateway的配置文件 spring:cloud:gateway:# 。。。globalcors: # 全局的跨域处理add-to-simple-url-handler-mapping: true # 解决options请求被拦截问题corsConfigurations:[/**]:allowedOrigins: # 允许哪些网站的跨域请求 - http://localhost:8090allowedMethods: # 允许的跨域ajax的请求方式- GET- POST- DELETE- PUT- OPTIONSallowedHeaders: * # 允许在请求中携带的头信息allowCredentials: true # 是否允许携带cookiemaxAge: 360000 # 这次跨域检测的有效期7消息列队 7.1如何进⾏消息队列选型 Kafka 优点 吞吐量非常⼤性能非常好集群高可⽤。 缺点会丢数据功能比较单⼀。 使⽤场景⽇志分析、⼤数据采集RabbitMQ 优点 消息可靠性⾼功能全⾯。 缺点吞吐量⽐较低消息积累会严重影响性能。erlang语⾔不好定制。 使⽤场景⼩规模场景。RocketMQ 优点⾼吞吐、⾼性能、⾼可⽤功能⾮常全⾯。 缺点开源版功能不如云上商业版。官⽅⽂档和周边⽣态还不够成熟。客户端只⽀持java。 使⽤场景⼏乎是全场景。 7.2 RabbitMQ如何确保消息不丢失 开启生产者确认机制确保生产者的消息能够到达队列如果出现错误可以先记录到日志在处理开启持久化功能。确保消息未消费之前队列不会丢失其中交换机、队列、和消息都要做持久化。 ①交换机持久化 Bean public DirectExchange simpleExchange(){ //三个参数交换机名称是否持久化当没有队列与其绑定是是否删除return new DirectExchange(simple.direct,true,false); }②队列持久化 Bean pulic Queue simpleQueue(){ //使用QueueBuilder构建队列时durable就是持久化return QueueBuilder.durable(simple.queue).build(); } ③消息持久化SpringAMQP中的消息持久化是默认的 开启消费者确认机制为auto,由Spring确认消息消费成功之后返回ack抛出异常返回nack当然也要设置重试次数超过次数就将失败的消息投递到异常交换机有人工处理。 7.4 RabbitMQ重复消费是怎么解决的 重复消费当消费者设置了自动确认机制当服务来没有来得及给MQ确认的时候服务器宕机了导致服务重启之后又消费力一次消息。 解决给每条消息设置唯一id当服务器重启后先到数据库去查询这个数据是否存在如果不存在说明没有处理过那么正常处理这条数据就行了如果存在了说明处理过了这样就避免了重复消费。 7.5 RabbitMQ死信交换机延迟队列 像超时订单、限时优惠、定时发布会用到延迟队列其中延迟队列就用到了死信交换机和TTL消息存活时间实现的消息超时未消费就会变成死信消费拒绝被消费列队满了也会成为死信 7.6 什么是惰性队列 接收到的消息直接存入磁盘而不是内存消费者消费消息时才会读到内存支持百万条消息存储 如何实现惰性列队 方式一声明队列时 Bean public Queue lazyQueeu(){return QueueBuilder.durable(lazy.queue).lazy()//开启x-queue-mode为lazy.build(); }方式二注解 RabbitListener(queueToDeclare Queue(namelazy.queue,durable(ture),arguments Argument(name x-queue-mode,value lazy)//添加此行 )) public void listenLazyQueue(Strinf msg){log.info({},msg) }7.7 消息堆积如何解决 增加更多的消费者提高消费速度在消费者内开启线程池加快消息处理速度扩大队列容积提高堆积上线采用惰性队列 7.8 RabbitMQ高可用机制了解吗 一般情况下使用镜像模式搭建的集群共有3个节点镜像列队结构是一主多从从就是镜像所有操作都是主节点完成然后同步给镜像节点。主节点宕机后镜像节点会代替成为新的主节点如果在主节点同步数据之前宕机可能存在数据丢失 7.8.1那丢失怎么办呢 使用仲裁列队与镜像列队一样但是它同步基于Raft协议强一致 仲裁列队使用也比较简单不需要额外的配置只需在声明队列时指定它是仲裁队列就行了 7.9 消息列队的作用为什么使用消息服务 应用解耦如果有订单系统下单成功之后需要调用库存系统扣减库存随着公司业务的发展又需要增加物流系统接收下单信息此时有需要订单系统增加调用物流系统的代码但是增加队列后订单系统只需要将下单信息发送到队列其他系统需要这个消息自己来订阅就可以了并且也不会因为库存系统异常导致下单失败异步提速用户注册成功后需要先将数据保存并且发送邮件通知邮件通知成功后再发送短息通知短信通知成功后才响应客户成功消息。用户体验很差。增加消息队列后只需要保存数据将发送邮件通知和短信通知消息发送到消息队列可以极大提升响应速度流量削峰如果订单系统每秒只能处理1k的请求量但是在某一瞬间比如抢单每秒可以达到1W甚至更多的请求这种情况下可能会直接导致订单系统崩溃增加消息队列后订单系统没拉取1K请求可以很平稳的去消费消息。 7.10RabbitMQ工作原理 原理流程 1消息发布者向RabbitMQ代理Broker指定的虚拟主机服务器发送消息 2虚拟主机服务器内部的交换机接收消息并将消息传递并存储到与之绑定的Binding的消息列队中 3消费者通过一定的网络连接与消息代理建立连接同时为了简化开发在连接内部使用了复用的信道进行消息的最终消费。 Broker接收和分发消息的应用RabbitMQ Server 就是 Message Broker Virtual hostVirtual host是一个虚拟主机的概念一个Broker中可以有多个Virtual host每个Virtual host都有一套自己的Exchange和Queue同一个Virtual host中的Exchange和Queue不能重名不同的Virtual host中的Exchange和Queue名字可以一样。这样不同的用户在访问同一个RabbitMQ Broker时可以创建自己单独的Virtual host然后在自己的Virtual host中创建Exchange和Queue很好地做到了不同用户之间相互隔离的效果。 Connectionpublisher/consumer和borker之间的TCP连接 channel发送消息的通道如果每一次访问 RabbitMQ 都建立一个 Connection在消息量大的时候建立 TCP Connection 的开销将是巨大的效率也较低。Channel 是在 connection 内部建立的逻辑连接如果应用程 序支持多线程通常每个 thread 创建单独的 channel 进行通讯AMQP method 包含了 channel id 帮助客 户端和 message broker 识别 channel所以 channel 之间是完全隔离的。Channel 作为轻量级的 Connection 极大减少了操作系统建立 TCP connection 的开销 Exchangemessage 到达 broker 的第一站根据分发规则匹配查询表中的 routing key分发 消息到 queue 中去。常用的类型有direct (point-to-point), topic (publish-subscribe) and fanout (multicast) QueueQueue是一个用来存放消息的队列生产者发送的消息会被放到Queue中消费者消费消息时也是从Queue中取走消息。 Bindingexchange 和 queue 之间的虚拟连接binding 中可以包含 routing keyBinding 信息被保 存到 exchange 中的查询表中用于 message 的分发依据 7.11RabbitMQ常见的工作模式 7.11.1 Work queues(工作列队模式) 不需要设置交换机会使用默认的交换机进行消息转换需要指定消息列队消费者通过轮训的方式接收消息 7.11.2 发布订阅模式 需要配置fanout类型交换机同时将消息路由到每一条消息列队上然后每个消息列队都可以对相同的消息进行接收存储进而由各自消息列队关联的消费者进行消费 7.11.3 Routing(路由模式) 需要配置direct类型交换机并且指定不同的路由键值Rounting Key将消息从交换机路由到不同的消息列队进行存储由消费者进行各自消费 7.11.4Topics通配符模式 需要设置topic类型的交换机并指定不同的路由键值Routing Key将对应的消息从交换机路由到不同的消息列队进行存储由消费者进行各自消费Topics模式与Routing模式不同的是Topics模式的路由键值是包含通配符的用.和其他字符连接。 7.12 SpringAmqp的使用 7.12.1 发消息 引依赖编写发布服务的配置文件 spring:rabbitmq:host: 192.168.150.101 # 主机名port: 5672 # 端口virtual-host: / # 虚拟主机username: itcast # 用户名password: 123321 # 密码发布消息 Autowiredprivate RabbitTemplate rabbitTemplate;public void testSimpleQueue() {// 队列名称String queueName simple.queue;// 消息String message hello, spring amqp!;// 发送消息rabbitTemplate.convertAndSend(queueName, message);//这里可以设置Routing key比如 rabbitTemplate.convertAndSend(exchangeName, red, message);}7.12.2接收消息 编写消费服务的配置文件 spring:rabbitmq:host: 192.168.150.101 # 主机名port: 5672 # 端口virtual-host: / # 虚拟主机username: itcast # 用户名password: 123321 # 密码2.接受消息 Component public class SpringRabbitListener {RabbitListener(queues simple.queue)public void listenSimpleQueueMessage(String msg) throws InterruptedException {System.out.println(spring 消费者接收到消息【 msg 】);} }7.13 使用注解的方式声明和发布交换机 RabbitListener(bindings QueueBinding(value Queue(name direct.queue1),exchange Exchange(name itcast.direct, type ExchangeTypes.DIRECT),key {red, blue} )) public void listenDirectQueue1(String msg){System.out.println(消费者接收到direct.queue1的消息【 msg 】); }RabbitListener(bindings QueueBinding(value Queue(name direct.queue2),exchange Exchange(name itcast.direct, type ExchangeTypes.DIRECT),key {red, yellow} )) public void listenDirectQueue2(String msg){System.out.println(消费者接收到direct.queue2的消息【 msg 】); }
http://www.zqtcl.cn/news/822542/

相关文章:

  • 网站栏目 英文wordpress 情侣
  • 济南市历下区建设局官方网站wordpress 作者页
  • 武进建设银行网站首页大型网站建设哪家快
  • 做网站用vs怎么自己写代码做网站
  • 网站建设产品需求文档技术培训学校机构
  • 简单个人网站源码石景山网站seo优化排名
  • 用花生做网站房地产电子商务的网站建设
  • 宁波网站建设团队sem竞价托管多少钱
  • 工艺品东莞网站建设营销助手app
  • 怎么添加网站 多少钱wordpress 在线教育模板
  • 做鞋的垂直网站小型购物网站模板
  • 石家庄公司网站建设网站建设技术难点
  • 阿里云能放企业网站吗建设网站的建设费用包括什么
  • 网站对公司的作用是什么初学者学做网站用什么软件
  • 网站的建设模式高校后勤网站建设要求
  • 网站的导航栏怎么做的网站seo诊断报告怎么写
  • elementui 做的网站写网站编程需要什么
  • 一站式网站建设顾问小程序小游戏开发
  • 网站导航html网站开发从哪开始学
  • 成立网站是不是需要先成立公司上海今天新闻发布会直播
  • 企业只有建立了自己的网站网站建设骗子
  • 凡科 360免费建站培训网页制作机构
  • 做网站用什么后缀好法人变更在哪个网站做公示
  • 公司建一个网站多少钱戴尔公司网站建设
  • 可以做试卷网站数学试卷小学六白沟网站开发
  • 宁波个人网站建设好看的网站在哪里好找
  • 宜春做网站公司wordpress 朋友圈插件
  • 做特价网站ckplayer wordpress
  • 网站运营需要服务器吗在哪个网站做图片视频带音乐
  • 大连网站备案高品质网站建设公司