springcloud记录

euraka服务注册与发现
生产者 server
消费者 ribbon(每个消费者自己的负载均衡)、feign
    消费者ribbon (远程调用):
        RestTemplate调用euraka里已注册中的某个项目中的某些方法,项目名称: spring.application.name=Service-Hello (name名称全大写)
        如果负载均衡是在euraka上做,压力都在euraka上的,如果负载均衡是消费者上进行的,那么压力就分担到了每一个消费者上了。

        消费者做缓存,减小euraka压力,缓存存在时间固定,定时清理缓存。

        微服务是后台之间的调用


        多个生产者(server)的调用:
            多个生产者:name名称一样,端口号不一样
            负载均衡(默认是使用【轮询】进行负载均衡)
        
        缺点: 远程调用编写杂乱,不规范
    
    feign(是在ribbon上进行了封装,使程序更加规范):
        ribbon是在某个类中的某个方法,每次调用需要填写调用的name调用的返回值,调用的参数等等,feign是通过在接口上添加注解@FeignClient("Service-Hello"),注解里的name就是调用的项目名称,大小写不敏感。

        
euraka部署多个节点(集群)
        中心化:nigix为例,主nginx和从nginx,主没挂之前从是没有运行的,主挂了之后从才补上来进行运行。

        去中心化:还是nginx为例,主和从一起运行,主挂了之后从继续运行。

        euraka去中心化。

        euraka集群相互注册(properties配置)


断路器hystrix
        如果euraka定时进行心跳检测,在几个周期都没有心跳,那么久判定节点故障,但是前几个周期可能会有服务调用该节点,产生问题。
        现在需要当某些节点故障的时候,就不要去继续访问了,其他的服务只访问正常运行的节点,这个需要断路器实现故障转移。

        1.服务降级
            当发生故障的时候,不会直接将报错信息代码直接显示到页面上,而是显示一些另外的内容,比如写好的错误页面。(就是在失败的时候,指定程序执行什么什么东西)
        
        2.故障转移
    
        ribbon中添加hystrix
            pom中引入hystrix

        feign中使用hystrix
            feign中集成hystrix,所以只需要在properties里配置一下(feign.hystrix.enabled=true)。
        

springboot

        springboot注册servlet、Filter、listener

        springboot读取spring配置文件

        springboot访问jsp


微服务设计模式

        聚合模式
            聚合层(例如:网站首页) + 原子层(具体的某些服务,例如:用户服务)
            电商购物功能设计:
                电商前台  +  商品服务、购物车服务、交易服务
            前端微服务化
                将html和js做成模板,通过后台传递过来的json来加载模板
            vue、anglaJs、nodeJs:后端界面展现
            数据库切分:
                跨库关联查询解决方案
                分布式事物处理:
                    TCC方案
                        (try,confirm,cancel事物的补偿)最终一致性(过程中可能会有不一致的情况,不过这个不一致时间会很短)
                        如果confirm失败的概率只有1%,那么cancel的失败概率为1%*1%,做一个记录日志,最后进行人工干预即可。

                        阿里GTS解决方案

                    基于消息(消息队列)的最终一致性方案
                        缺点:出现数据不一致性的时间会很长

        代理模式(if else)

        链式模式(串成一个长链,不太通用)

        分支模式(聚合+代理模式组合使用)

        异步模式(添加使用mq消息队列(mq需要足够大,需要分布式mq))

        数据共享模式
            问题:  如果数据库的某个表要进行更改(添加删除某个字段),相关服务的对应内容都需要更改...
            解决:一个表对应一个微服务进行操作,比如user表这个表的curd都交个A服务,其他服务需要对user表进行操作查看,都去调用A服务即可。

            微服务+大数据 使用数据共享模式


微服务架构实现读写分离


session管理与无状态设计

        如果某个服务挂了,其他服务需要继续执行该操作,需要获取到用户的session,那么如何存放session呢?

        负载均衡的session同步与故障转移
        1.将session传递到前台,然后用户每次操作的时候,就能在后台获取的该session,缺点就是安全问题

        2.利用redis的特性,将session存储到redis中

        微服务无状态设计原则

        无状态通信:RESTful风格


服务网关(Gateway)
路由网关(Zuul)


流量控制

        令牌桶算法:限制突发性流量
        漏桶算法:平滑流量、流量整形
        节流:去掉相同的请求
        


    
        
        
        
                        
                    
                    
 


        
        
    
        

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值