本文主要是介绍熬夜会秃头——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 {@Overridepublic 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 {@Autowiredprivate 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;
}
三、站立式会议照片
四、当日项目燃尽图
这篇关于熬夜会秃头——alpha冲刺Day4的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!