熬夜会秃头——alpha冲刺Day4

这个作业属于哪个课程2301-计算机学院-软件工程社区-CSDN社区云
这个作业要求在哪里团队作业——站立式会议+alpha冲刺-CSDN社区
这个作业的目标记录alpha冲刺Day4
团队名称熬夜会秃头
团队置顶集合随笔链接Alpha 冲刺随笔置顶(熬夜会秃头团队)-CSDN博客

目录

一、团队成员站立式会议总结

二、今日成果展示

三、站立式会议照片

四、当日项目燃尽图


一、团队成员站立式会议总结

组员昨天站立式会议到现在的进展存在的问题/遇到的困难今天到明天会议的安排心得体会
陈少桐

把无法渲染的图片成功渲染,并且完成了子窗体页面

原生导航栏无法实现subnvue子窗体弹窗,需要变成自定义导航栏

解决导航栏问题

了解了subnuve的具体配置以及在vue页面的引用、nvue页面与vue页面的语法差异,以及pages.Json的配置问题。

梁菲汎

完成了用户界面

还未与其他界面进行交互,bucket管理以及存储量的扇形图还无法动态渲染

继续写页面

明白了该如何去利用css去制作折线图以及扇形图,对它的应用有了更深的理解,也对页面的排版更加得心应手。

陈知菲

使用Ribbon配置网关的负载均衡策略;Feign的优化、手动从Nacos获取服务列表功能的实现,Radis无中心化集群slot分配机制的模拟实现

使用Feign时报错”Method Not Allowed”

解决:导入HttpClient依赖,配置HttpClient连接池,遂正常运行

无法手动地从Nacos注册中心拉取服务列表

解决:上网搜索得知,NacosDiscoveryClient类可以获取服务与示例,遂注入DiscoveryClient(NacosDiscoveryClient的接口),获取服务信息

实现注册、桶删除、桶权限管理的功能

对Ribbon和spring的LoadBalancer两种负载均衡策略有了新的认识,了解了动态改变Feign的url的方法。

在学习负载均衡策略的过程中,我体会到分析框架源码的重要性。起初,我对Ribbon和LoadBalancer的机制与区别不是很了解,通过打断点跟踪源码执行,看到了从拉取服务列表到选择服务实例的全程,对整个框架架构的理解更进一步。

李恒欣完善后端代码功能需要较多时间完成不熟悉的工作实现后端其他功能对后端的学习已经有了一定的进展,仍需实践熟练
邱思源对新实现的后端代码进行单元测试测试的时候有些功能不熟悉继续对后端代码进行单元测试单元测试应该针对具体的功能或方法进行测试,而不是对整个类或模块进行测试。
宋芳鑫完成404界面404界面的出现条件需要更改完成其他模块的交互功能加深理解了Javascript的方法定义,在重定向的页面返回的HTTP状态码为“200”,表示URL有效。搜索引擎在搜索也会去爬取,反之则可以返回404界面
张一凡对新实现的前端代码进行单元测试前端测试的时候需要去询问并理解一下代码继续对前端代码进行单元测试每个测试用例应该只测试一个特定的功能或行为,这样可以避免测试用例之间的相互干扰。
林承桢继续进行功能测试,完善测试文档测试文档有些信息要有意义的进行整合填写测试文档重新审视了一下之前文档编写的漏洞,发现有些关于测试风险的没有书写,需要再去了解一下如何编写文档
黄才栋完成创建bucket的交互功能交互的时候用uni.switchtab导致交互不了,要改成uni.navigateTo完成其他模块的交互功能编写代码效率有所提高,也对解决问题有了一定的理解。
谢怀广核对新增代码规范并制作项目燃尽图继续核对新增代码规范并制作项目燃尽图通过核对代码规范自己也对前后端的知识有了一定的了解。

二、今日成果展示

权限管理的读写权限界面

subnvue的子页面配置

子页面弹出窗

创建bucket界面以及页面丢失情况

用户界面

<!-- Unnamed (矩形) -->
               <div id="u753" class="ax_default _三级标题">
                   <div id="u753_div" class=""></div>
                   <div id="u753_text" class="text ">
                       <p><span>Bucket列表</span></p>
                   </div>
               </div>

               <!-- Unnamed (图片) -->
               <div id="u754" class="ax_default image">
                   <img id="u754_img" class="img " src="@/assets/images/主界面/u123.png"/>
                   <div id="u754_text" class="text " style="display:none; visibility: hidden">
                       <p></p>
                   </div>
               </div>

               <!-- Unnamed (矩形) -->
               <div id="u755" class="ax_default _三级标题">
                   <div id="u755_div" class=""></div>
                   <div id="u755_text" class="text ">
                       <p><span>权限管理</span></p>
                   </div>
               </div>

               <!-- Unnamed (图片) -->
               <div id="u756" class="ax_default image">
                   <img id="u756_img" class="img " src="@/assets/images/主界面/u83.png"/>
                   <div id="u756_text" class="text " style="display:none; visibility: hidden">
                       <p></p>
                   </div>
               </div>

               <!-- Unnamed (矩形) -->
               <div id="u757" class="ax_default _三级标题">
                   <div id="u757_div" class=""></div>
                   <div id="u757_text" class="text ">
                       <p><span>文件备份</span></p>
                   </div>
               </div>

               <!-- Unnamed (图片) -->
               <div id="u758" class="ax_default image">
                   <img id="u758_img" class="img " src="@/assets/images/主界面/u85.png"/>
                   <div id="u758_text" class="text " style="display:none; visibility: hidden">
                       <p></p>
                   </div>
               </div>

               <!-- Unnamed (矩形) -->
               <div id="u759" class="ax_default _三级标题">
                   <div id="u759_div" class=""></div>
                   <div id="u759_text" class="text ">
                       <p><span>基本设置</span></p>
                   </div>
               </div>

               <!-- Unnamed (热区) -->
               <div id="u760" class="ax_default">
               </div>

               <!-- Unnamed (热区) -->
               <div id="u761" class="ax_default">
               </div>

           
       <div id="u743_state1" class="panel_state" data-label="概览" style="visibility: hidden;">
           <div id="u743_state1_content" class="panel_state_content">

               <!-- Unnamed (矩形) -->
               <div id="u765" class="ax_default box_1">
                   <img id="u765_img" class="img " src="@/assets/images/主界面/u71.svg"/>
                   <div id="u765_text" class="text " style="display:none; visibility: hidden">
                       <p></p>
                   </div>
               </div>

               <!-- Unnamed (矩形) -->
               <div id="u766" class="ax_default box_1">
                   <img id="u766_img" class="img " src="@/assets/images/主界面/u72.svg"/>
                   <div id="u766_text" class="text " style="display:none; visibility: hidden">
                       <p></p>
                   </div>
               </div>

               <!-- Unnamed (矩形) -->
               <div id="u767" class="ax_default box_1">
                   <img id="u767_img" class="img " src="@/assets/images/主界面/u72.svg"/>
                   <div id="u767_text" class="text " style="display:none; visibility: hidden">
                       <p></p>
                   </div>
               </div>
               <!-- Unnamed (矩形) -->
               <div id="u770" class="ax_default box_1">
                   <img id="u770_img" class="img " src="@/assets/images/主界面/u72.svg"/>
                   <div id="u770_text" class="text " style="display:none; visibility: hidden">
                       <p></p>
                   </div>
               </div>

               <!-- Unnamed (图片) -->
               <div id="u771" class="ax_default image">
                   <img id="u771_img" class="img " src="@/assets/images/主界面/u77.png"/>
                   <div id="u771_text" class="text " style="display:none; visibility: hidden">
                       <p></p>
                   </div>
               </div>
               <!-- Unnamed (图片) -->
               <div id="u840" class="ax_default image">
                   <img id="u840_img" class="img " src="@/assets/images/主界面/u83.png"/>
                   <div id="u840_text" class="text " style="display:none; visibility: hidden">
                       <p></p>
                   </div>
               </div>

               <!-- Unnamed (矩形) -->
               <div id="u841" class="ax_default _三级标题">
                   <div id="u841_div" class=""></div>
                   <div id="u841_text" class="text ">
                       <p><span>文件备份</span></p>
                   </div>
               </div>

               <!-- Unnamed (图片) -->
               <div id="u842" class="ax_default image">
                   <img id="u842_img" class="img " src="@/assets/images/主界面/u169.png"/>
                   <div id="u842_text" class="text " style="display:none; visibility: hidden">
                       <p></p>
                   </div>
               </div>

               <!-- Unnamed (矩形) -->
               <div id="u843" class="ax_default _三级标题">
                   <div id="u843_div" class=""></div>
                   <div id="u843_text" class="text ">
                       <p><span>基本设置</span></p>
                   </div>
               </div>

网关的负载均衡策略配置(使用ribbon的WeightedResponseTimeRule——通过为服务器配置权重实现负载均衡)

user-service:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.WeightedResponseTimeRule

基于feign和nacos实现对redis哈希槽的模拟(为之后去中心化集群节点间调用做准备)

Feign的url根据传入数据的哈希值动态配置

	@FeignClient(name = "node01-service", url = "EMPTY")
public interface TestFeign {

    @GetMapping("/bucket/test")
    String test(URI uri, @RequestParam String str);
}

Feign拦截器——为通过feign调用的请求添加包含用户信息的请求头

@Component
public class FeignRequestInterceptor implements RequestInterceptor {

    @Override
    public void apply(RequestTemplate requestTemplate) {
        requestTemplate.header("id",
                UserContextHolder.getContext().getProperty("id").toString());
        requestTemplate.header("userEmail",
                UserContextHolder.getContext().getProperty("userEmail").toString());
        requestTemplate.header("nickName",
                UserContextHolder.getContext().getProperty("nickName").toString());
        requestTemplate.header("phoneNumber",
                UserContextHolder.getContext().getProperty("phoneNumber").toString());
        requestTemplate.header("picture",
                UserContextHolder.getContext().getProperty("picture").toString());
        requestTemplate.header("userStatus",
                UserContextHolder.getContext().getProperty("userStatus").toString());
        requestTemplate.header("type",
                UserContextHolder.getContext().getProperty("type").toString());
    }
}

Feign性能优化——使用httpclient连接池

从Nacos的DiscoveryClient编码获取服务列表

@Component
public class ServicesUtil {

    @Autowired
    private DiscoveryClient discoveryClient;

    public List<ServiceInstance> getInstance(String serviceName) {
        return discoveryClient.getInstances(serviceName);
    }
    public Integer getSlot(ServiceInstance instance) {
        return Integer.parseInt(instance.getMetadata().get("slot"));
    }

}

槽分配的具体实现

@Override
public String test(String str) {
    int hashCode = str.hashCode();
    hashCode %= 150;
    if (hashCode >= slot && hashCode < slot + 50) {
        return port;
    }
    List<ServiceInstance> instances = servicesUtil.getInstance("node01-service");
    for (ServiceInstance instance : instances) {
        Integer slot1 = servicesUtil.getSlot(instance);
        if (hashCode >= slot1 && hashCode < slot1 + 50) {
            try {
                String uri = "http://" + instance.getHost() + ":" + instance.getPort();
                return testFeign.test(new URI(uri), str);
            } catch (URISyntaxException e) {
                throw new RuntimeException(e);
            }
        }
    }
    return null;
}

三、站立式会议照片

四、当日项目燃尽图

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值