项目管理与架构

代码的技术角度是短浅的,可能解决的是很小问题的curd   更应该学习代码中的思想,解决问题的能力
在微服务架构的视角下,所谓系统检修,不过只是一次在线服务更新而已,先停掉 1/3 的机器,升级新的软件版本,再有条不紊地导流、测试、做金丝雀发布,一切都是显得如此理所当然、平淡寻常

分布式架构,无论是 SOA、微服务、服务网格或者其他架构风格,集中配置,涉及与远程服务交互时,服务的注册发现、跟踪治理、负载均衡、故障隔离、认证授权、伸缩扩展、传输通讯、事务处理,等等,这一系列问题都是无可避免的。
本地针对单个服务编码、调试完成后,通过 CI/CD 流水线部署到 Kubernetes 中进行集成的

进程间通信 
管道(Pipe) ps -ef | grep java  ps与grep都有独立的进程,以上命令就通过管道操作符|将ps命令的标准输出连接到grep命令的标准输入上。
信号(Signal)kill -9 pid 由 Shell 进程向指定 PID 的进程发送 SIGKILL 信号
信号量(Semaphore) wait()和notify()操作
消息队列(Message Queue)Queue 以上三种方式只适合传递传递少量信息 进程可以向队列添加消息,被赋予读权限的进程则可以从队列消费消息
共享内存(Shared Memory)效率最高的进程间通信形式。原本每个进程的内存地址空间都是相互隔离的
套接字接口(Socket)可用于不同机器之间的进程通信

REST 与 RPC 作为主流的两种远程调用方式  fegin是一种伪rpc
REST 的主体是资源  是一种网络应用程序的设计风格和开发方式(基于HTTP)    RPC更侧重于动作
RPC长链接。不必每次通信都要像 HTTP 一样去 3 次握手,减少了网络开销。
注册发布机 丰富的监控管理;发布、下线接口、动态扩展等,对调用方来说是无感知
RPC在协议层中层级也不一样  Socket:是在应用程序层面上对TCP/IP协议的封装和应用

事务 ACID C是目的  MyISAM不支持事务
本地事务是指仅操作单一事务资源的、不需要全局事务管理器进行协调的事务。
全局事务 多个数据源Transactional
分布式事务 队列 tcc  seata

透明多级分流系统 客户端缓存 域名解析 传输链路 内容分发器CND 负载均衡 服务器缓存

需求分析-概要设计-详细设计-程序编码-程序测试-软件交付-客户验收-码农维护

需求分析:安全事故导致停产,领导需要做安全检测

概要设计:通过syslog,snmp,kafka,api,流量探针监控数据分析数据安全分析入库。在web进行展示

详细设计:不同区域,单位展示不同的数据。权限验证模块等架构设计

程序编码:一个月交付雏形,领导通病,需求不断变化

程序测试:进行系统的测试,发现bug,不同测试用例保证系统正常,很重要。回归,最后写一份测试报告

软件交付:测试结束以后没有任何的问题的话,就可以写用户手册。针对不同人的职位习惯不一样,注重点也不一样

客户验收:交付后客户简单的测试以后觉得是和自己想的一样的,就收货,交剩下的预留款。

码农维护:一个软件很多时候是在用一段时间以后才会出问题的,所以会一直需要人来维护他们】

作为项目leader,需要明确需求,项目交接时间和业务,对整个项目进度掌握,分配工作要结合每个人特点。团队会议明确、按照时间节点和任务节点交付。

代码管理,代码检查,编译构建,部署和发布等一站式的流水线开发流程

敏捷开发:是以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。(微服务)软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。

迭代开发:每次只设计和实现这个产品的一部分, 逐步逐步完成的方法叫迭代开发, 每次设计和实现一个阶段叫做一个迭代。每一次迭代都包括了定义、需求分析、设计、实现与测试。迭代一般指某版本的生产过程,版本一般指某阶段软件开发的结果,一个可交付使用的产品。与迭代开发对应是瀑布模型,螺旋模型(发生的循环之前,都必须首先进行风险评估)等

传统的瀑布式开发:要求每一个开发阶段都要做到最好。特别是前期阶段,设计的越完美,提交后的成本损失就越少。

迭代式开发:不要求每一个阶段的任务做的都是最完美的。而是把主要功能先搭建起来为目的,以最短的时间.

UML规范就是给我们提供建模标准。!!!这一点对开发人员而言非常重要-它简单,容易发现出新的想法,随着你(对软件)的理解的加深,也能够很容易的改进。建立一个基本业务流程走向。系统架构,单独模块与其他模块交互。

项目初期:对系统核心架构公共需求分析和实现。权限,单位获取等,采用什么技术,日志,redis等。在开发单独的模块。

项目中期:持续测试和集成。

项目重构:项目诞生之时,由于业务量,数据量不多。存在大量冗余的逻辑代码,后续采用了微服务和中间件。新的架构设计,进行业务拆分。分为业务和技术重构。!!!重构使其结构化,代码规范化,弱耦合。糟糕的类型,重复代码,过长的函数(一般超过200行),过长的参数列表,考虑用对象替换参数列表

加入一些设计模式,单利,模板模式,ThreadLocal等。提取公共对象字段。提取公共的方法到父类中或者工具类中。代码复用能够大大简化我们的工作,代码的扩展性等。

复用就是公共功能、过程的抽象,体现为能被重复使用的类、方法。
扩展,前提是明确需求或者产品的发展方向,可预见的一段时间内,会加什么功能。降低代码的耦合性有关系。跟接口有关

敏捷开发优点:1、降低风险  2、得到早期用户反馈  3、持续的测试和集成 4、快速开发

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值