<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Pekko on liloew is writing</title><link>https://blog.liloew.in/tags/pekko/</link><description>Recent content in Pekko on liloew is writing</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Sat, 03 Oct 2026 11:57:17 +0800</lastBuildDate><atom:link href="https://blog.liloew.in/tags/pekko/index.xml" rel="self" type="application/rss+xml"/><item><title>修复 Apache Pekko Connectors S3 与华为云存储 OBS 兼容性问题</title><link>https://blog.liloew.in/posts/apache-pekko-connectors-s3-with-huawei-obs/</link><pubDate>Sat, 03 Oct 2026 11:57:17 +0800</pubDate><guid>https://blog.liloew.in/posts/apache-pekko-connectors-s3-with-huawei-obs/</guid><description>&lt;h2 id="背景"&gt;背景&lt;/h2&gt;&#10;&lt;p&gt;在软件开发领域文件访问是绕不开的内容，无论是从最早的 &lt;code&gt;FTP&lt;/code&gt;，还是到后来的 &lt;code&gt;SFTP&lt;/code&gt;、&lt;code&gt;WebDAV&lt;/code&gt;，乃至现在占据主流的 &lt;code&gt;S3&lt;/code&gt; 兼容协议，文件存取一直在向着访问安全、接入简易和弹性扩展的方向演进。因此越来越多的云厂商或开源项目锚定 &lt;code&gt;S3&lt;/code&gt; 协议不断开发各种衍生产品。&lt;/p&gt;&#10;&lt;p&gt;正好之前项目中涉及文件存取相关的需求，在适配和开发过程中遇到一些问题记录在此处。目前问题已经提交回官方并经过了一轮 &lt;code&gt;Review&lt;/code&gt;，目前是待合并状态。&lt;/p&gt;&#10;&lt;h2 id="第一次封装"&gt;第一次封装&lt;/h2&gt;&#10;&lt;p&gt;首先，我们定义一个 &lt;code&gt;IStorageService&lt;/code&gt; 接口，并为该接口提供多个实现类，在实际使用时则通过配置项动态决定使用何种实现。基于演示的目的实际代码做了简化。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;public&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;interface&lt;/span&gt; &lt;span class="nc"&gt;IStorageService&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Vendor&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;getVendor&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;InputStream&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;downloadFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;String&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;考虑到可能接入的兼容 &lt;code&gt;S3&lt;/code&gt; 实现我们选取了 &lt;code&gt;AWS S3&lt;/code&gt;，&lt;code&gt;MinIO&lt;/code&gt; 和 &lt;code&gt;Huawei OBS&lt;/code&gt;，接下来以标准的 &lt;code&gt;AWS S3&lt;/code&gt; 为例。&lt;/p&gt;</description></item></channel></rss>