国泰君安证券的容器化实践与挑战

需积分: 0 1 下载量 12 浏览量 更新于2024-07-17 收藏 5.9MB PDF 举报
"证券行业的容器实践之路资料下载.pdf" 这篇资料主要讲述了国泰君安证券在采用云计算技术,特别是容器技术进行云平台建设的过程和挑战。由国泰君安证券的云计算负责人谢杨军分享了公司在多云数据中心建设、基于Kubernetes的容器云和服务网格落地等方面的经验。 首先,国泰君安证券的云平台建设项目包括构建多云数据中心,旨在整合各地的数据中心资源,实现IDC的上云设计和建设。同时,他们也采用了Kubernetes作为容器编排工具,推进ServiceMesh、CI/CD等现代IT实践,以提高效率并降低运营成本。此外,公司还涉及Openstack、Vmware、Cloudstack等多个云平台的设计和建设,以及分布式存储、超融合、SDN等新型基础设施技术,以适应不断变化的业务需求。 在2018年至2019年间,国泰君安证券经历了从容器选型到阿里云PaaS平台的PoC验证,再到容器云项目的启动和实施。在此过程中,他们遇到了一些痛点,如传统虚拟机(VM)资源利用率低、碎片化严重,以及测试、预发、生产环境的一致性问题。传统IT运维工作繁琐且易出错,同时缺乏统一的大台意识,导致各业务线重复劳动。容器云的落地需要解决业务微服务化转型、与原有系统的对接、快速配套服务等问题,还要确保业务的平滑迁移,减少非技术因素的影响。 在容器化过程中,国泰君安证券的容器平台基于Kubernetes架构,其中关键组件包括kube-dns(提供DNS服务)、IngressController(提供外部访问入口)、Heapster(资源监控)、Dashboard(图形用户界面)和Federation(跨可用区的集群管理)。Kubernetes的核心组件,如etcd(存储集群状态)、apiserver(处理资源操作)、controller-manager(保持集群状态)等,都在这个架构中扮演着重要角色。 面临的技术挑战包括提高计算资源的利用率、容器化服务的跨机房容灾、Docker化的调试与问题定位、数据持久化优化、内核版本稳定性和隔离度与安全性等问题。通过容器化,国泰君安证券旨在提升运维效率,增强系统的弹性和可扩展性,以支持证券行业的创新业务需求。

将下列代码改为对上海证券交易所网站公告爬取from concurrent.futures import ThreadPoolExecutor import requests headers = { "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.159 Safari/537.36" } def download_pdf(url, code, num, date): print(f'开始下载 data/{code}_{date}_{num}.pdf') resp = requests.get(url, headers=headers) with open(f'E:/深交所pdf/{code}_{date}_{num}.pdf', 'wb') as f: f.write(resp.content) resp.close() print(f'E:/深交所pdf/{code}_{date}_{num}.pdf 下载完毕!') if __name__ == '__main__': domain = 'http://www.sse.cn' with ThreadPoolExecutor(30) as t: with open('target.csv', 'r') as f: lines = f.readlines() for line in lines: param = list(line.split()) form = { 'seDate': [param[3], param[3]], 'stock': [param[0]], 'channelCode': ['listedNotice_disc'], 'pageSize': '50', 'pageNum': '1' } # 获取文件列表的url get_file_list_url = 'http://www.sse.com.cn/disclosure/listedinfo/announcement/json/announce_type.json?v=0.9715488799747511' resp = requests.post(get_file_list_url, headers=headers, json=form) # resp.encoding = 'utf-8' # print(resp.json()) js = resp.json() resp.close() tot = 0 for data in js['data']: tot += 1 download_url = domain + f'/api/disc/info/download?id={data["id"]}' t.submit(download_pdf, url=download_url, code=param[0], num=tot, date=param[3]) print("下载完毕!!!") # doc_id = '' # download_url = domain + f'/api/disc/info/download?id={"c998875f-9097-403e-a682-cd0147ce10ae"}' # resp = requests.get(download_url, headers=headers) # with open(f'{"c998875f-9097-403e-a682-cd0147ce10ae"}.pdf', 'wb') as f: # f.write(resp.content) # resp.close()

2023-06-03 上传